C++ Textdatei auslesen ->er liest den letzten char zwei mal

...komplette Frage anzeigen

1 Antwort

Ich vermute es ist Folgendes:

Wenn du das "e" von "affe" gelesen hast, ist das EOF noch nicht erreicht. Das EOF ist dann erst das nächste Zeichen. Wenn du das "e" gelesen und ausgegeben hast, ist die Abbruchbedingung allerdings noch nicht erfüllt. Also geht das ganze nochmal durch die Schleife.

Ich bin mir gerade nicht 100%ig sicher, wie die get-Methode von ifstream funktioniert, aber ich denke mal, wenn die get-Methode das nächste Mal augerufen wird, wird das EOF erkannt. Da aber kein weiteres Zeichen vorhanden ist, steht in "zeichen" immernoch das "e" vom Durchlauf davor. Da direkt danach die Ausgabe kommt, wird das "e" nochmal ausgegeben.

ich habe das letzte zeichen mal geändert. also er wiederholt auch das (egal was, selbst leerzeichen :D)

deine theorie leuchtet mir ein, ist ja auch die sinnvollste. habe auch den code mit dem im video verglichen. ist das selbe.

0
@meistersocke

Prüf doch einfach in der While-Schleife nach dem Lesen des Zeichens nochmal auf EOF und mach nur die Ausgabe, wenn das EOF nicht erreicht ist^^

1
@Farel
while (!lesen_aus_datei.eof())
{
    lesen_aus_datei.get(zeichen);

    if (!lesen_aus_datei.eof())
    {
        std::cout << zeichen;
    }
}

klappt perfekt :D dankeschöön

0

Was möchtest Du wissen?