Standarteingabe erweitern
-
hallo ich habe folgede frage:
wenn ich eine Dezimalzahl (0-9) einlesen möchte mache ich das mit
int a;
cin >> a;Hierbei muss man dann noch enter drücken.
Und wenn mann einen Buchstaben oder ähnliches eingibt, entsteht ein fehler.Jetzt zu der Frage:
- Wie schaffe ich es einfach nur auf eine Zahl 0-9 zu drücken ohne dann Enter drücken zu müssen?
2)Wie prüfe ich ob das eingegebene zeichen wirklich ein int ist?
Merci Paplo
-
-
Mit Standard-C++ gar nicht. Jenseits des Standards könntest du z.B. getch() (aus der conio.h) verwenden oder WM_CHAR-Nachrichten (WinAPI) abfangen und interpretieren.
-
Lies die Eingabe in einen char ein und prüf dann mit isdigit(), ob da eine gültige Ziffer gekommen ist. Oder du fängst Eingabefehler ab, indem du den Status von cin überprüfst.
-
-
Könntest du da noch genauer erläutern?
Codebeispiel? bin noch ein NOOB

-
Zur ersten Frage findest du im Konsolen- oder WinAPI-Forum sicher Ansätze.
Zur zweitens Frage:
int a; cin>>a; if(!cin)//Fehler { cin.clear(); cin.ignore(numeric_limit<streamsize>::max()); // weitermachen } //oder char a = cin.get() if(isdigit(a))//Ziffer eingegeben cout<<"Eingabe war "<<a<<endl; else//Fehler cout<<"Falsche Eingabe: "<<a<<" ist keine Ziffer!"<<endl;