while verursacht Endlosschleife
-
Hallo Community!
Muss leider noch ne Anfängerfrage stellen. Hab jetzt bereits über 2h investiert um das Problem zu lösen.
Folgender Code:
#include <string> #include <iostream> using std::cin; using std::cout; using std::string; using std::endl; main() { string satz; int entscheidung=1; while (entscheidung==1) { getline(cin, satz); cout << satz << endl; cout << "1 für nochmal"; cin >> entscheidung;} return 0; }Sinn der Whileschleife sollte sein, dass wenn man bei "entscheidung" den Wert 1 eingibt nochmals die Möglichkeit besteht eine Zeichenfolge einzugeben. Wenn man irgendetwas anderes !=1 eingibt soll das Programm beendet werden.
Leider verhält es sich so, dass bei Eingabe von 1 die Frage immerwieder gestellt wird, das Programm also nicht den While - Rumpf zwischen den {..} wiederholt.
Gebe ich keinen Integerwert für entscheidung an, verursacht das eine Endlosschleife und "1 für nochmal" wird immerwieder (endlos) ausgegeben.
Kann mir jemand erklären, was ich hier wieder falsch mach

Vielen Dank!
-
Du solltest die Streams auf Fehlerflags prüfen (z.B.
eof()), um ihren Status abzufragen. Wenn nämlich eine Eingabe nicht funktioniert hat oder das Ende des Streams erreicht wurde (EOF), wird die Arbeit eingestellt.
Debugger wäre auch nicht die schlechteste Idee.Übrigens: Welcher Compiler lässt das durchgehen?
main()In C++ muss
intexplizit angegeben werden.Ausserdem dürfte das so sowieso nicht funktionieren, da
getline()nicht definiert ist (wäre auch im Namensraumstd, und hast du bei deinenusings vergessen).
-
Hallo!
In der Tat , da hab ich doch glatt das int vergessen. Hm... g++ unter Debian Lenny lässt das durchgehen...
Fehlerflags ok: Da muss ich noch einiges lernen (nachlesen) Sagt mir nämlich im Moment nicht viel.
LG und Danke!