Textfile auslesen
-
Du darfst gewisse Wörter wie "Grundlagen" und "Qt" oder "Spiel" nicht in einer Antwort zusammen schreiben. Das sind Schlüsselwörter, wo manche User direkt das Hirn ausschalten und in den Angriffsmodus gehen.
-
@Jockelx ja das gibt's immer wieder mal. Wobei ich mir doch denke, auf Angriff schalte ich wenn ich mich bedroht fühle. Wo liegt da die Bedrohung? Aber gottseidank gibt es immer noch normale Leute im forum die gerne mal einem Anfänger helfen.
-
@marsmännchen sagte in Textfile auslesen:
Deshalb ich auch anfangen zu lernen Grundlagen.Du verstehen?
-
@marsmännchen sagte in Textfile auslesen:
@Jockelx Aber gottseidank gibt es immer noch normale Leute im forum die gerne mal einem Anfänger helfen.
Naja wer ist schon normal. @Swordfish ist aber auf jeden Fall ein eher hilfreicher Zeitgenosse. Hat halt manchmal seine Momente, so wie wir alle.
-
@hustbaer Wenn @marsmännchen sich hinsetzen und lernen ordentlich ich nichts gesagt haben will.
. o O ( erschlagt meinen Deutschlehrer eben wenn ihr ihn seht )
. o O ( wenn ich was Positives an der originalen Fragen finden sollte ... es ist wenigstens kein!myfile.eof()
drinnen )
-
@Swordfish Tut mir leid das Thema in die länge zu ziehen, aber da drängt sich mir natürlich die Frage auf was an
!myfile.eof() so schlecht ist? Man sieht es in sehr vielen Beispielen in Verwendung.
-
@marsmännchen sagte in Textfile auslesen:
@Swordfish Tut mir leid das Thema in die länge zu ziehen, aber da drängt sich mir natürlich die Frage auf was an
!myfile.eof() so schlecht ist? Man sieht es in sehr vielen Beispielen in Verwendung.Es wird fast immer falsch benutzt. Wo siehst du es "in sehr vielen Beispielen in Verwendung"? Alle Beispiele der Art
while (!myfile.eof()) { ... }
sind schlecht. Das Eofbit wird erst gesetzt, nachdem versucht wurde, über das Dateiende hinaus zu lesen.
-
@wob wo in welchen Beispielen? z.b:
https://mathbits.com/MathBits/CompSci/Files/End.htm
http://www.cplusplus.com/reference/ios/ios/eof/
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.bpxbd00/feof.htm
http://www.willemer.de/informatik/cpp/fileop.htmDaher ist es natürlich für mich interessant zu hören das man das nicht tun sollte.
Aber egal, ich will mit solchen Details eure Geduld nicht zu sehr strapazieren. Sowas kann ich auch sicher irgendwo spezifisch lesen wie man EOF genau verwendet.
Danke jedenfalls für die Hilfe!
-
Kann man mit
!eof
als Laufbedingung nicht auch wunderschön endlos loopen?
-
@hustbaer ja, das geht damit ganz toll
@marsmännchen sagte in Textfile auslesen:
da drängt sich mir natürlich die Frage auf was an
!myfile.eof() so schlecht ist? Man sieht es in sehr vielen Beispielen in Verwendung.Da hast du genug Lesestoff: Why is iostream::eof inside a loop condition considered wrong?
-
@marsmännchen Bitte eof() von std Streams nicht mit feof() verwechseln. Heisst zwar ähnlich, tut aber nicht ganz gleich.
-
@marsmännchen sagte in Textfile auslesen:
@wob wo in welchen Beispielen? z.b:
https://mathbits.com/MathBits/CompSci/Files/End.htmVergiss das, insbesondere die Box mit "Rule"! Eigentlich vergiss alles auf dieser Seite!
Unter anderem: assert benutzt man nicht für Checks, ob IO-Operationen erfolgreich waren, sondern für Programmlogik, die immer korrekt sein muss. Header in C++ sind ohne .h, usw. Also: das hat jemand geschrieben, der keine Ahnung von C++ hat.Klar, die Funktion gibt es und das Beispiel zeigt, wie man sie nutzen kann.
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.bpxbd00/feof.htm
feof ist nicht stream.eof
Auch besser nicht lesen.
Daher ist es natürlich für mich interessant zu hören das man das nicht tun sollte.
Aber egal, ich will mit solchen Details eure Geduld nicht zu sehr strapazieren. Sowas kann ich auch sicher irgendwo spezifisch lesen wie man EOF genau verwendet.
Danke jedenfalls für die Hilfe!Das "richtige" Pattern in C++ ist:
while (myfile >> wert) { // verarbeite Wert } //oder std::string line; while (std::getline(myfile, line)) { // verarbeite Zeile }
Also: du versuchst zu lesen so lange es geht. eof wird erst NACH einem fehlgeschlagenen Einleseversuch true. Wenn du
while (!file.eof()){ file >> wert; std::cout << wert << '\n'; }
hast, dann ist eof noch false, auch wenn du schon am Ende bist. file >> wert funktioniert dann nicht und setzt eof. Was steht dann in wert und warum wird der noch ausgegeben? Das passt nicht.
-
@wob sagte in Textfile auslesen:
@marsmännchen sagte in Textfile auslesen:
@wob wo in welchen Beispielen? z.b:
https://mathbits.com/MathBits/CompSci/Files/End.htmHaha, schon lange nicht mehr so einen veralteten Dreck gelesen.
-
Dieser Beitrag wurde gelöscht!