Überprüfen der Eingabe
-
Hallo
ich bin neu im C++ BEreich und hab mich nun an die Arbeit gesetzt und ein Programm geschrieben welches mit Brüchen rechnet. Das Mathematische udn funktionelle ist soweit alles erledigt und funktionstüchtig. Nun geht es allerdings an Feintuning.
Mein Problem im Moment ist, das ich gerne überprüfen würde, ob eine Eingabe ein INT Wert ist oder nicht. Allerdings habe ich keine Ahnung wie ich dies bewerkstelligen könnte.
Anbei der Code der Eingabevoid bruch::eingabe() { cout << "Zähler: "; cin >> zaehler; cout << "Nenner: "; cin >> nenner; }Lg
-
Wenn du etwas in eine int-Variable einliest, ist das Ergebnis (im Erfolgsfall) per Definition ein int-Wert. Wenn da etwas kommt, was nicht als int ausgewertet werden kann, setzt der Stream das eofbit - Korrektur: das failbit - , das du auswerten und zurücksetzen kannst (und lässt die fehlerhafte Eingabe im Puffer stehen):
bool ok=false; cout<<"Zähler:" while(!ok) { cin>>zahler; if(!cin)//Fehler aufgetreten { cin.clear(); cin.ignore(numeric_limits<streamsize>::max(),'\n'); cout<<"Bitte keinen Müll eingeben\n"; } else ok=true; }(das kannst du noch in eine Funktion auslagern, dann wird's kompakter)
-
CStoll schrieb:
Wenn du etwas in eine int-Variable einliest, ist das Ergebnis (im Erfolgsfall) per Definition ein int-Wert. Wenn da etwas kommt, was nicht als int ausgewertet werden kann, setzt der Stream das eofbit
Ist es nicht eher das failbit? (meiner Referenz zufolge zumindest)
-
Punkt für dich - das kommt davon, wenn man schneller schreibt als denkt
