ifstream Fehler (nocreate)
-
bei diesem Code
ifstream inputFile( filename, ios::in | ios::binary | ios::nocreate );
bekomm ich den Fehler:
E2451 Undefiniertes Symbol 'nocreate'
Woran kann das denn liegen?
-
Ist std::ios::nocreate nicht eine proprietäre Erweiterung irgendeines bestimmten Compiler-Herstellers? In der FAQ steht IMO etwas dazu, schlag mal nach!
-
hmm, ich hab aber
<fstream.h>
inkludiert...
-
Aus den FAQ:
Update:
Immer mal wieder taucht die Frage auf, warum die Angaben ios::nocreate bzw. ios::noreplace als Open-Flags auf Compiler A nicht aber auf Compiler B funktionieren. Die Antwort ist einfach:
Weder ios::nocreate noch ios::noreplace sind Standard-C++. Diese beiden Open-Flags waren bei den veralteten <fstream.h>-Strömen weit verbreitet. Sie gehörten aber zu keiner Zeit zu den Standard-Strömen.Manchmal sind diese Flags aber ganz praktisch. Man kann sie wie folgt simulieren:
int main() { // nocreate fstream f("Datei.txt", ios::in); if (f.good()) { // ok. Datei existiert. f.close(); f.open("Datei.txt", ios::out); if (f.is_open()) { // Mit Datei arbeiten } } else { cout << "Datei existiert nicht." << endl; } // noreplace fstream f2("Datei.txt", ios::in); if (!f2) { // ok. Datei existiert nicht. Neu erstellen f.clear(); f.open("Datei.txt", ios::out); if (f.is_open()) { // mit Datei arbeiten } } else { cout << "Datei existiert bereits!" << endl; } }
[ Dieser Beitrag wurde am 11.06.2003 um 00:40 Uhr von nman editiert. ]