std::getline
-
hallo leute
wo liegt der unterschied zwischen
std::getline(datei, t_line)
und
std::getline(datei, t_line).good()
?
ich lese eine datei ein, wo die letzte zeile kein newline besitzt.
in einer while schliefe werden bei der ersten version alle zeilen gelesen und bei der zweiten version bekomme ich fuer die letzte zeile false.also so sieht der code aus:
std::string t_line; int line_no = 1; while(std::getline(datei, t_line)/*.good()*/) { std::cout << "(" << line_no << ") "; std::cout << t_line; std::cout << "<<" << std::endl; ++line_no; }
Meep Meep
-
Das ist der Unterschied zwischen good und fail: bei EOF liefern beide false, also good() ist nicht !fail().
-
In der Doku findest du dieses Verhalten auch:
ohne .good: http://www.cplusplus.com/reference/ios/ios/operator_bool/Tabelle von .good, .fail etc.:
http://www.cplusplus.com/reference/ios/ios/good/Ich weiß ohne die Doku nie, welches von fail und bad wofür gut ist, irgendwie ist das Naming nicht eindeutig genug... Hat jemand eine Erinnerungshilfe dafür?