cin soll nur gültige Eingaben zulassen.
-
Hi,
ich habe ein richtiges Problem das mich zur Verzweiflung treibt...
Ich möchte das der Benutzer solange aufgefordert wird bis er eine Zahl zwischen 0 und 4 eingibt. Das ist auch nicht das Problem mit einer do-while Schleife. Jedoch wird ein String anstatt einer Zahl eingegeben, hängt sich das Programm in der do-while Schleife regelrecht auf und ich weiß echt nicht mehr weiter, wie das richtig gehen soll.
Ich habe auf cppreference.com mal was rumgestöbert und daraus ist das entstanden.
unsigned long id = 0; bool bad_input = false; do { bad_input = false; cout << "id: "; cin >> id; if (!cin.fail () && id <= num_template_) break; bad_input = true; cin.clear (); cin.ignore (numeric_limits<unsigned long>::max (), '\n'); } while (bad_input);Doch das geht nicht, fail schlägt nicht an, der Eingabepuffer wird nicht geleert und ich werde regelrecht erschlagen mit "id: ", was tausende von Male auf dem Bildschirm draufgehauen wird, ohne das ich ne Eingabe tätigen kann.

Jemand eine Idee zu meinem Problem?
Schon mal vielen vielen Dank im voraus

Schönen Abend noch!
-
Hi,
mojomi schrieb:
cin.ignore (numeric_limits<unsigned long>::max (), '\n');mach daraus mal ein
cin.sync(); // oder einfach cin.ignore() // sync kein ISO C++Keine Ahnung, das nervt mich schon seit Ewigkeiten, das genau hier es nicht so funktioniert wie es soll...
Deswegen empfehle ich dir die sauberste und beste Lösung:
cin.clear (); std::string temp; getline(cin, temp); // ließt den ganzen Müll im Puffer weg