Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Frage zu ANSI/ISO Standard C++ I/O Klassen

d-oli / 0 Antworten / Baumansicht Nickles

Hallo Leute


 


Anscheinend gibt es einen neuen C++ Standard. Redhat 9 hat einiges mit so genannten „Backward Header“ gelöst (z.B. das Namespace Problem in iostream.h, std::cout, std::cin etc.)


 


Doch es gibt noch andere Probleme, so z.B. das „old Style C++ I/O System“ und die neuen ANSI/ISO Standard C++ I/O Klassen. Diese Probleme treten allerdings nur mit einem GNU Compiler > V 3.x.x auf. Aber irgendwann muss man ja umsteigen.


 


Ein Bespiel:


 


// Diese Funktion Prüft, ob eine Datei schon existiert


int Exists(char *file_name)


{


  fstream temp_ptr;


 


  temp_ptr.open( file_name, ios::in | ios::nocreate, filebuf::openprot );


 


  if( !temp_ptr )


  {


    return false;


  } else


    {


      temp_ptr.close();


      return true;


    }


}


 


Im „old Style C++ I/O System“ gab es folgende Werte um mit Dateien zu arbeiten:


 


ios::app


ios::ate


ios::binary


ios::in


ios::nocreate


ios::noreplace


ios::out


ios::trunc


 


In den neuen ANSI/ISO Standard C++ I/O Klassen existieren die beiden Werte „ ios::nocreate“ und „ios::noreplace“ nicht mehr.


 


Nun meine Fragen:


 


1.       Wie kann die Funktion „ Exists“ auf den neuen ANSI/ISO Standard umgeschrieben werden?


2.       filebuf::openprot” scheint für den neuen GNU Compiler ebenfalls ein Problem zu sein. Wozu dient das und wie kann es auf den neuen ANSI/ISO Standard umgeschrieben werden?


 


Dank und Gruss


d-oli

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen