|
#1
|
||||
|
||||
C++ Dateiausgabe
Wahrscheinlich ein lächerlicher Fehler, aber ich finde ihn nicht. Warum gibt mein Code das letzte Zeichen einer Datei doppelt aus?
Code:
ifstream Eingabe; Eingabe.open(Datei.c_str(), ios_base::in); cout << "\nGebe Datei aus: \n"; char zeichen; while (!Eingabe.eof()) { Eingabe.get(zeichen); cout << zeichen; } Eingabe.close(); cout << endl; ![]()
__________________
I ELUCIDATE THE TRUTH OF A CASE FROM NOW ON! |
#2
|
||||
|
||||
Also ich fänds ja ned schlecht, wenn ich die Funktionsweise der Unterprogramme kennen würde
![]()
__________________
Nach der GetBoinked5 von [Unbekannt]: "Ich hab aus Gewohnheit und Versehen zu meiner Freundin gesagt: Thekenschlampe bring mir noch n Bier" |
#3
|
||||
|
||||
Definiere "Unterprogramm". Das ist schon alles. Eigentlich fehlt nur die Deklaration von "Datei" (ist ein String, der den Dateinamen enthält) und der Rest des Programms ist dafür nicht relevant, weil auf nichts darin noch einmal referenziert wird.
Übrigens, mal prophylaktisch: Ich weiss, dass man das auch anders ausgeben kann, habs im Endeffekt auch über cout gemacht, aber ich würde gerne wissen, warum der oben stehende Code nicht funktioniert, wei er soll.
__________________
I ELUCIDATE THE TRUTH OF A CASE FROM NOW ON! |
#4
|
||||
|
||||
Ich bzw. mein VS kann irgendwie mit dem ifstream nix anfangen, von was ist das abgeleitet bzw. welche includes werden dafür verwendet ?
|
#5
|
||||
|
||||
ifstream ist ein reiner input file stream aus fstream. Was soll VS abkürzen?
__________________
I ELUCIDATE THE TRUTH OF A CASE FROM NOW ON! |
#6
|
||||
|
||||
Hmm, wenn du
Code:
if(Eingabe.get(zeichen) != 0) cout << zeichen; ![]() Warum es mit nur while nicht funzt, kann ich nicht wirklich erklären, vermute nur dass die Datei nach dem Lesen des letzten Zeichens halt noch nicht eof ist, sondern erst eines später, deshalb wird das letzte Zeichen doppelt ausgegeben ( get schlägt fehl und zeichen bleibt unverändert ). VS = Visual Studio ![]() |