[C++] Überprüfung einer cin - Eingabe

lowlix

Grünschnabel
Hi alle zusammen!

Ich stehe grade vor dem Problem eine Abfrage für eine Eingabe zu schreiben.
Und zwar soll über cin ein Wert in die double-Variable "temperatur" eingelesen werden. Dabeil soll überprüft werden, ob diese Temperatur sich in dem gegeben Intervall befindet und ob es sich auch wirklich um einen double-Wert und nicht um einen Buchstaben oder sonstiges handelt. Anschließend wird noch eine Funktion aufgerufen, die den Wert verarbeitet.
Ich habe jetzt schon einiges probiert und dachte eigentlich, dass diese simple while-Schleife das Problem schon lösen könnte..
tut sie aber nicht :(

Code:
cout << "Temperatur/Grad Celsius <Bereich -25 bis 125 Grad Celsius>: " << endl;
cin >> temperatur;

while  ( !cin  || (temperatur < -25 || temperatur > 125 ) ) {
		cout << "Eingebene Temperatur ausserhalb des erlaubten Intervalls!" << endl;
		cout << "Geben Sie eine Temperatur im vorgegeben Interball ein! " << endl;
		cin >> temperatur;
}
temperaturFaktor = berechneFaktor(temperatur,tmparr,15);

Beim Debuggen habe ich gemerkt, dass die Zeile
Code:
 cin >> temperatur;
in der while-Schleife einfach ignoriert wird. Ich verstehe leider nicht so ganz wieso.

Würde mich über Hilfe und neue Ideen freuen!
Liebe Grüße Felix
 
Hallo,

wenn du in die while-Schleife eingetreten bist, befindet sich der istream unter Umständen in einem Fehlerzustand. Du musst daher den Fehler zurücksetzen und den Eingabepuffer leeren. Das sollte mit diesen beiden Zeilen vor dem erneuten aufruf von cin gelingen:
C++:
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Gruß
MCoder
 

Neue Beiträge

Zurück