Ich habe eine Funktion, die eine Datei char von char lesen und an die Konsole ausgeben soll, bis sie EOF erreicht. Die Funktion funktioniert einwandfrei und zeigt alle Zeichen an, die ich möchte, aber dann geht es weiter und hört nie am Ende auf.Funktionsstörung mit EOF
Unten ist die Funktion
void displayAllLines(ifstream &joke)
{
char ch;
joke.clear();
ch = joke.get();
while (ch != EOF)
{
cout << ch;
ch = joke.get();
}
}
Inhalt der Datei unter
aufgeführten„(Leerzeile) F: Was die Zunge an die Zähne sagen haben?“
Wie ich schon sagte, zeigt es die Linie gut, aber die Schleife geht weiter nach dem Fragezeichen.
Irgendwelche Gedanken darüber, warum dies sein könnte? Sind weitere Informationen erforderlich, um meine Frage richtig beantworten zu können?
Es ist nur eine Gewohnheit, die mir beigebracht wurde, wenn ich mit einer Datei anfing. Stellen Sie nur sicher, dass es am Anfang keine Flaggen gibt. Denkst du, dass es sinnlos ist, oder denkst du, dass es möglicherweise schädlich für ein Programm ist? EDIT :: Wie für den Code, den Sie veröffentlicht haben, wird es sicherlich das Programm weiter, aber nicht berücksichtigt Leerzeichen und zeigt alles ohne Leerzeichen – Podo
Auch neugierig, wenn Sie irgendwelche Gedanken haben, warum mein Code * nicht * Arbeit. – Podo
Ii glaube nicht, dass Sie blind '' clear() '' nennen sollten. Wenn Flags gesetzt sind, dann ist das ein Grund und einfach zu löschen, wird nicht helfen. Ihr Code funktioniert nicht, da C++ - Streams EOF nicht wie ein Zeichen als C lesen. C++ streamt die gelesenen Zeichen, bis sie EOF treffen. (Sie geben niemals das EOF-Zeichen zurück - das ist ein C-Ding.) – Phil