Eingabevalidierung

BLR

Erfahrenes Mitglied
Hallo,

ich habe folgendes Problem.

Ich muss endlich viele Zahlen eingeben können und wenn ich 'q' drücke, soll die Eingabe abgebrochen werden.
Allerdings, wenn ich q eingeben, werde ich eine Exception, dass keine Zahl ist.
Wie kann das umgehen****?
Mein Code:

Code:
try {
        int zahl(0);
        char abbruch;
        cout << "Geben sie Bitte eine Zahl ein, für Abbruch q drücken\n";

        while (true) {
            if(cin >> zahl){
                continue;
            }
            cin >> abbruch;
            if (abbruch=='q') {

                break;
            }

            if ((cin.fail()) {
                throw runtime_error("eine Zahl müsste eingegeben werden\n");

            }
            cout << "eingegebene Zahl: " + zahl;

        }
        cout << "Sie haben q gedrückt\n";


        return 0;
    } catch (std::exception &ex) {

        cerr << ex.what();
        return -2;
    }

Danke für die Hilfe.
 
Frage nach keiner Ganzzahl sondern nach einem Character (char). Auch character kannst du mit Vergleichsoperatoren behandeln, z.B:
C++:
char c = '4';
if( c >= '0' && c <= '9' ){
  cout << 'c ist eine Zahl';
}
 
Zurück