5 Stimmen

ios::nocreate-Fehler beim Kompilieren eines C++-Codes

Beim Kompilieren eines Pakets, das in C++ auf RHEL 5.0 geschrieben wurde. Ich erhalte den folgenden Fehler.

> Fehler: nocreate ist nicht Mitglied von std::ios

Der Quellcode entspricht dem:

ifstream tempStr( argv[4] , ios::in | ios::nocreate );


Ich habe versucht

g++ -O -Wno-deprecated <file.cpp> -o <file>

als auch:

g++ -O -o <Datei>

Bitte schlagen Sie eine Lösung vor.

9voto

ios::nocreate ist nicht Teil des C++-Standards - was erwarten Sie von dieser Funktion?

Edit: Nach einer Google-Recherche sieht es so aus, als solle verhindert werden, dass die Datei erstellt wird, wenn sie noch nicht existiert. Das ist sowieso der Standard für ifstreams, also kann man einfach sagen:

ifstream f( filename );
if ( ! f.is_open() ) {
    // open failed - probably because infput file does not exist  
}

7voto

Öffnen einer Datei im Lesemodus ( ios::in ) wird es nicht erstellen, wenn es nicht existiert. Sie können einfach den Nicht-Standard weglassen nocreate . Und da in ist der Standard für ifstream :

ifstream tempStr (argv[4]);

0voto

xophos Punkte 306

Sie können die Datei als Filehandle mit fopen und O_CREAT|O_EXCL öffnen und sie dann in einen Stream umwandeln mit

__gnu_cxx::stdio_filebuf<char> filebuf(posix_handle, std::ios::out);
    ostream os(&filebuf);

wird eine nicht standardisierte Erweiterung verwendet, die in . Wenn jemand eine bessere Lösung hat, möchte ich das wirklich wissen!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X