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. ]


Anmelden zum Antworten