Effektives Abfangen von Falscheingaben



  • Morgen,

    ich sitze hier schon eine Weile und komme einfach nicht weiter. Hab ein Programm welches Int-Werte einliest, jedoch möchte ich dort auch eine Fehlerbehandlung machen,d.h. ich möchte abfangen wenn zum Beispiel ein String eingegeben wurde(String bedeutet bei mir eine Zeichenkette größer gleich 1 Zeichen). Jedoch komme ich einfach auf eine gute Lösung, hier ist erstmal das was ich habe.

    int eingabe;
    do
    {
    
             cin>>eingabe;
    
            if(!cin)
            {
                cin.clear();
                cin.ignore();
                cout<<"Fehler,Neue Eingabe:--> "<<endl;
    
            }
    
            else if(eingabe <1 || eingabe >3)
            {
                cout<<"Zahlen nur zwischen 1 - 3:--> ";
            }
    
    }while(!cin || ( eingabe < 1 || eingabe > 3));
    

    problem bei diesem code ist, sobald der eingegebene Falschstring eine Länge von größer 1, wird mir die Ausgabe so oft ausgegeben, so lang der eingegeben String lang ist.
    Ich hoffe ihr könnt mir helfen, und bei einer besseren lösung zur seite stehen.



  • evtl. noch ein cin.sync( ) nachdem cin.ignore.

    Gruß Tobi.



  • super tobi, danke. Und das sync() bewirkt das alle anderen character in dem eingabebuffer ignoriert werden? oder wie habe ich das verstanden`?


Anmelden zum Antworten