Frage zu getline
-
Hoi ich will eine Zeile aus einer Datei lesen das mache ich so:
string line; ifstream file ("file.txt"); file.getline ( &line[0] , 200 ) ; line = &line[0]; cout<<line[0]<<endl; // Gibt das erste Zeichen der Zeile aus cout<<line<<endl; // Gibt die ganze Zeile in einem mal ausKann man eine Zeile auch so einlesen das man sich das line = &line[0]; sparen kann?
-
Das sollte so garnicht funktionieren.
Die korrekte Lösung ist:
std::getline(file, line)
-
Wie schon geschrieben, das ist die beste Lösung:
std::getline(file, line)Man kann aber auch deine und die von dir angedachte Lösung mit einer Änderung zum Laufen bekommen.
Nimm die bessere Variante und gut ist.:)
MfG f.-th.
-
Jo, ich nehm die Variante von euch.
Aber meine funktionierte auch. ^^
-
DateiAusleser schrieb:
Aber meine funktionierte auch. ^^
Nein, das tut sie ganz sicher nicht. Deine bis zu 200 Zeichen werden irgendwo ins Nirvana geschrieben.
-
Dir hat nur keiner gesagt, dass es nicht läuft (also Computer doer Compiler waren still). Vielleicht hattest du auch sehr viel Glück und an der entsprechenden Stelle war grad Platz und es hat keinen gejuckt, dass du da schreibst.
-
"Es knallt nicht" != "Es funktioniert"

-
Ich rate mal: du benutzt MSVC. Der hat eine optimierung für kurze Strings. Du hast ferner nur kurze Zeilen in der Datei stehen, kürzer als 16 Zeichen. Das getline funktioniert zufälligerweise, weil es in den internen Speicher des Strings schreibt.
Wenn ich damit recht hab, dann schreib mal eine richtig lange Zeile rein, mindestens 30 Zeichen. Dann laufen lassen, aber vorher Ohren zuhalten und in Deckung gehen...
-
pumuckel schrieb:
Wenn ich damit recht hab, dann schreib mal eine richtig lange Zeile rein, mindestens 30 Zeichen. Dann laufen lassen, aber vorher Ohren zuhalten und in Deckung gehen...
Ich hab mal 200 Zeichen reingeschrieben und es ist nicht gecrasht.

Ich verwende gerade einen alten Borland Compiler ( Borland C++ Builder 6 ).Jetzt sollte ich mich eigentlich ärgern das es nicht gecrasht ist. Wäre es gecrasht hätte ich sofort gesehen das ich falschen Code geschrieben hätte. Ich würde auch einen moderneren Compiler nehmen aber den muss ich erst installieren.^^ (Sollte ich wohl mal tun .. )
-
DateiAusleser schrieb:
pumuckel schrieb:
Wenn ich damit recht hab, dann schreib mal eine richtig lange Zeile rein, mindestens 30 Zeichen. Dann laufen lassen, aber vorher Ohren zuhalten und in Deckung gehen...
Ich hab mal 200 Zeichen reingeschrieben und es ist nicht gecrasht.

.. und ich sprang im 20.Stock aus dem Fenster und als ich 19.Stockwerke tief gefallen war, ging es mir noch gut - was soll jetzt noch schief gehen!