Problem mit ifstream -> bei der zweiten Nutzung geht nichts mehr



  • #include <string>
    #include <fstream>
    
    ifstream infile;
    string sTmp;
    
    infile.open("c:\\tmp\\proto-2004-10-19.txt");
    
    while (!infile.eof())
    {
    getline(infile,sTmp);
    };
    
    infile.close();
    
    infile.open("c:\\tmp\\proto-2004-10-20.txt");
    
    while (!infile.eof())
    {
    getline(infile,sTmp);
    };
    

    So sinngemäß läuft das Programm ab. Mit dem ersten File klappt alles bestens. Alle Zeilen werden gelesen und bei eof wird abgebrochen.

    Dann wird die Datei geschlossen und es geht mit der nächsten weiter.

    Hier geht das Problem los -> infile.good() ist nach dem zweiten Öffnen immer false!

    Auch wenn ich genau das gleiche File nochmal öffnen will. Gelesen wird dann natürlich auch nichts richtiges mehr. Ich bin völlig durcheinander... Was kann hier los sein?

    Die txt-Files sind unter Linux erstellt und haben nur \n als Zeilenende. (Falls das in diesem Zusammenhang eine Bedeutung haben sollte.

    Übersetzen will ich mit Borland C++ Builder 6.

    Hoffe es hat jemand einen kleinen Hinweis!

    Danke schonmal!

    Volker



  • Hi,

    durch das, das eof gelesen wurde musst du infile erst wieder neuinitialisieren (clear())

    So müsste es dann gehen:

    #include <string>
    #include <fstream>
    
    ifstream infile;
    string sTmp;
    
    infile.open("c:\\tmp\\proto-2004-10-19.txt");
    
    while (!infile.eof())
    {
    getline(infile,sTmp);
    };
    
    infile.close();
    
    infile.clear(); // <--- Wichtig macht infile wieder nutzbar!
    
    infile.open("c:\\tmp\\proto-2004-10-20.txt");
    
    while (!infile.eof())
    {
    getline(infile,sTmp);
    };
    

    MfG



  • Danke für den Hinweis. Hab's auch gleich mit großer Hoffnung probiert.

    Funzt leider nicht. Unverändert :((



  • Hi,

    Also ich weiß ja nicht woran es liegt, aber bei mir funktioniert das wunderbar.

    hmm könnte es sein das die 2. Datei nicht existiert? oder so?
    (Pfad falsch oder dergleichen)

    MfG


Anmelden zum Antworten