getline funktioniert nicht als abbrechbedingung
-
Wieso habe ich ne Endlosschleife hier obwohl ich eigtl eine Abbrechbedingung habe?
while(getline(input_file,line_of_interrest)) { koordinaten = (line_of_interrest.substr(line_of_interrest.rfind("("), line_of_interrest.rfind(")" - line_of_interrest.rfind("(")))); berechne_koos(x,y,koordinaten); name = (line_of_interrest.erase(line_of_interrest.rfind("("), line_of_interrest.length() - line_of_interrest.rfind("("))); langsamste_einheit = (einheit_choose()); Dorf buffer(0,langsamste_einheit,x,y,name); spieler.push_back(buffer); }inputfile is vom typ ifstream.
-
Weil die Abbruchbedingung immer 'true' ist!
-
Schon mal mit dem Debugger durchgegangen? Veränderst du irgendwo in der Schleife durch Funktionsaufrufe
input_file? Ich meine zum Beispiel durchberechne_koosoder dem erstellen von diesem Pufferdorf (Ein Pufferdorf? :D).Grüssli
-
Input_file wird nicht verändert.
Gibts eine andere Möglichkeit die Schleife zu machen?
-
Vielleicht input_file.eof() prüfen?
-
auch schon probiert klappt net.
-
David_pb schrieb:
Vielleicht input_file.eof() prüfen?
Käme auf das gleiche hinaus, im Gegenteil, du würdest eine Linie zu viel lesen.
@Jud4s,
Wie gesagt, geh mal mit dem Debugger durch.Grüssli
-
was soll ich denn da genau mit dem Debugger finden? Ich bin da durch gegangen aber die Feststellung bleibt. getline gibt kein False wenn eof erreicht ist und ich versteh nicht wieso, bei anderen Codes hat das immer geklappt.
Liegt das daran das input_file n ifstream ist und ich somit aus nem ifstream lese und nicht aus std::cin?
-
eof ist doch idr -1 und while(-1){} ist ne endlos schleife

-
sry ich muß unbedingt aufhören c und c++ zu vermischen, das taugt nix, also diesen und den letzten post nicht beachten
