Falscheingabe bei cin
-
Wie kann man denn abfangen, dass bei einer Eingabe mit cin ein falscher Datentyp eingegeben wird?
void Help::selectHelpfile(){ ifstream is(themendatei); string line; int themennr; int lines=Help::showContent(); cout << "Nummer des anzuzeigenden Themas: "; cin >> themennr; if (themennr<=lines && themennr>0){ for (int i=1; i<=themennr; i++){ getline(is, line); } line = line.substr(4, strlen(line.c_str())) + ".txt"; ifstream show(line.c_str()); while (getline(show, line)){ cout << line << endl; } }else{ cout << "Das Thema existiert nicht." << endl; } }
- selectHelpfile wird aus einer anderen Methode (Menu) heraus aufgerufen. Menu läuft solange, bis jemand 'e' eingibt und für 's' z.B. wird die obige Methode aufgerufen.
- showContent gibt eine Inhaltsübersicht aus.Gibt jetzt jemand bei der Wahl der Anzeige einen char, statt einen int ein, so entsteht eine für mich unerklärliche Endlosschleife.
-
O.K ich hab ne Idee. Ich könnte ja die themennr. als string einlesen und dannversuchen ihn in einen int Wert umzuwandeln. Wenn das geht, wurde ein gültiger Wert eingegeben und wenn nicht, dann soll er eben ne Fehlerausgabe machen. Könnte das so funktionieren? Hab leider keinen Compiler parat.
if (!atoi(eingabe.c_str())){ cout << "Fehler"; }