If Abfrage wiederholen [Problem]



  • Hallo,

    wie schaffe ich es die If Abfrage in diesem Code zu wiederholen ?

    #include <iostream>
    using namespace std;

    int main(void) {
    int var;
    do {
    cout << "\nEingabe\n";
    var = 0;
    if( !(cin >> var) ) {
    cerr << "Keine Zahl\n";
    var = 0;
    cin.get();
    }
    else {
    cout << "Eingabe war : " << var << '\n';
    }
    } while( var != 10 );
    return 0;
    }

    Wenn die Eingabe von der Tastatur keine Zahl ist, dann wiederholt sich die Ausgabe "cerr << "Keine Zahl\n";" unendlich oft. Wie schaffe ich es dem Compiler zu sagen das er bei falscher Eingabe einfach die Abfrage nochmal stellt ?



  • Bitte Code-Tags benutzen.

    Du musst den Fehlerstatus zurücksetzen, sonst wird gar nichts gemacht. Und schlaue wäre natürlich auch den Puffer zu leeren.

    #include <iostream>
    #include <limits>
    using namespace std;
    
    int main()
    {
            int var;
            do
            {
                    cout << "\nEingabe\n";
                    if( !(cin >> var) ) {
                            cerr << "Keine Zahl\n";
                            cin.clear();//Fehlerstatus zurücksetzen
                    }
                    else
                            cout << "Eingabe war : " << var << '\n';
    
                    cin.ignore(numeric_limits<streamsize>::max(), '\n');//Puffer leeren
    
            } while( var != 10 );
    }
    


  • Danke für die schnelle Antwort 🙂

    Ich programmiere erst seit 2 Wochen und mache dies auch freiwillig.
    Wo stehen die ganzen cin.clear, cin.ignore, cin.get() usw. Befehle.
    In den Header Datein kann ich nichts nützliches für mich finden.
    Bin noch neu im Forum.



  • Keksman schrieb:

    Danke für die schnelle Antwort 🙂

    Ich programmiere erst seit 2 Wochen und mache dies auch freiwillig.
    Wo stehen die ganzen cin.clear, cin.ignore, cin.get() usw. Befehle.

    In der Referenz 🙂

    IOStreams:
    http://www.cplusplus.com/reference/iostream/
    std::cin :
    http://www.cplusplus.com/reference/iostream/cin/


Anmelden zum Antworten