fstream: Ein schreiben löscht altes Datenbestand



  • Hallo zusammen,

    in meinem Program habe ich ein Stream mit denen ich Dateien bearbeite. Leider wird mir der alte Bestand gelöscht. Beispiel:

    int main(){
    
        ofstream fInput;
    
        fInput.open("test01.txt");
        fInput << "Dies ist ein Test" << endl;
        fInput.close();
    
        fInput.open("test02.txt");
        fInput << "Dies ist ein Test 02" << endl;
        fInput.close();
    
        fInput.open("test01.txt");
        fInput << "Dies ist ein Test03" << endl;
        fInput.close();
    
        return 0;
    
    }
    

    wenn ich ein

    cat test01.txt
    

    mache, dann kommt nur:
    Dies ist ein Test03
    die Zeile:
    Dies ist ein Test01
    fehlt. Warum?

    Danke + Gruss,
    Haksi



  • Weil ofstream standardmäßig den alten Inhalt der Datei beim Öffnen löscht (std::ios::trunc).

    Du kannst als zweiten Parameter den Modus angeben, indem du die gewünschten Flags veroderst:

    fInput.open("test01.txt", std::ios::out | std::ios::app);
    

    Durch das std::ios::app ("append") bleibt der alte Inhalt der Datei erhalten.

    Stefan.


Anmelden zum Antworten