while(cin >> i) Problem



  • Hallo Leute,

    ich bin gerade daran einen Vector mit Integers zu füllen. Dies realisiere ich über eine while-Schleife:

    while(cin >> iZahl) {
                vZahlen.push_back(iZahl);
            }
    

    Das Problem ist nun, wenn ich eine falsche Eingabe mache, also z.B. "a" was ja keine ganze Zahl ist, beendet er mir das gesamte Programm. Wie kann ich das Abfangen? Vielen Dank schonmal.

    Gruß Marc



  • Mit while(cin >> i) sagst du doch, dass du genau das willst.

    Im Prinzip so:

    while(!fertig)
    {
        cin >> i;
    
        if(!cin)
        {
            cout << "ungueltige eingabe!\n";
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
        }
    }
    

    Dazu wirst du wohl noch ein #include <limits> brauchen.


Anmelden zum Antworten