endlos Schleife bei falscher Eingabe



  • Hallo!

    Ich mache eine Abfrage in meinem Programm wo ich den Benutzer auffordere einen int Wert zwischen 0-6 einzugeben. Dies mach ich ganz einfach mit

    int i;
    cin >> i;
    

    Numerische Eingaben die sich ausserhalb dieses Bereichs(0-6) befinden behandle ich in meiner Exception Klasse und führe das Programm normal weiter.
    Wenn ich aber z.B. einen char eingäbe endet das ganze in einer endlos Schleife. Meine Frage daher, wieso verhält sich das Programm so? Sollte man standardgemäß auch wenn man nur int Werte erwartet einen string oder char anstatt der int Variable(i) verwenden?

    MfG

    Dosunmu



  • Weil u es nicht behandelst:

    int my_value = 1;
    while (!(std::cin >> my_value)) { std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); }
    

    z.B. wäre eine Möglichkeit das zu umgehen ... aja ... hab es nicht getestet ... kann sein das ich nen Tippfehler drin hab ... also deswegen nicht direkt anscheißen ...


Anmelden zum Antworten