Warum geht das nur einmal?



  • Hallo,
    ich versuche die ganze Zeit etwas aus Dateien zu lesen, auf folgende Weise:

    while(!dat_ein.eof())
        {
                             dat_ein.get(zeichen);
                             cout<<zeichen;
        }
    

    Beim Ersten mal funktioniert das ja auch. Danach schreibe ich dat_ein.close(); und öffne dann eine Neue Datei und will auf die Selbe Weise lesen aber das geht nicht warum NICHT???

    MfG

    Sascha081088

    EDIT: Hät da noch ne Frage! Und zwar wird der Benutzer dazu aufgefordert den Namen einer Datei einzugeben und diese wird dann geöffnet. Nun dachte ich das es ungefähr so geht:

    dat_ein.open(Name".txt",ios_base::in);//Das ".txt" deshalb weil es eine Textdatei ist
    

    funktioniert allerdings nicht wie kann ich das anstellen!?

    Problem 1 hat sich gerade gelöst!



  • Hallo

    je nachdem was Text für einen typ hat. Wenn es std::sting ist, dann

    std::string Name;
    ...
    Name += ".txt";
    dat_ein.open(Name.c_str(),ios_base::in);//Das ".txt" deshalb weil es eine Textdatei ist
    

    bis bald
    akari



  • Sascha081088 schrieb:

    Beim Ersten mal funktioniert das ja auch. Danach schreibe ich dat_ein.close(); und öffne dann eine Neue Datei und will auf die Selbe Weise lesen aber das geht nicht warum NICHT???

    Weil das Statusflag für das Lesen über das Dateiende hinweg gesetzt bleibt. Die Fehlerflags kannst du mit dat_ein.clear() zurücksetzen.

    Übrigens gibst du ein Zeichen zuviel aus. eof liefert erst dann true, wenn get schon einmal fehlgeschlagen ist.



  • MFK schrieb:

    Übrigens gibst du ein Zeichen zuviel aus. eof liefert erst dann true, wenn get schon einmal fehlgeschlagen ist.

    Das hab ich auch gemerkt! Wie kann ich das beseitigen!?

    MfG

    Sascha081088

    p.s. Danke akari!



  • Hi
    z.B. so:

    while(dat_ein.get(zeichen))
    {
        cout<<zeichen;
    }
    

    Für eine nähere Erklärung siehe Homepage von HumeSikkins.


Anmelden zum Antworten