Probleme mit Switch
-
Moin,
Ich habe folgendes Problem
int Auswahl = 'a'; cout <<"(1) Mut" <<endl; cout <<"(2) Koerperkraft" <<endl; cout <<"(3) Gewandtheit" <<endl; cout <<"(4) Fingerfertigkeit" <<endl; cout <<"(5) Konstitution" <<endl; cout <<"(6) Klugheit" <<endl; cout <<"(7) Intuition" <<endl; cout <<"(8) Charisma" <<endl; cout <<"(0) Klassen Infos" <<endl <<endl; Auswahl = getchar() - '0'; cout <<endl; switch (Auswahl) { case 1: { }break; case 2: { }break; case 3: { }break; case 4: { }break; case 5: { }break; case 6: { }break; case 7: { }break; case 8: { }break; case 0: { }break; default: { cout <<"Falsche Eingabe!" <<endl <<endl; i--; } } // ende von switchHier bekomme ich immer 2 mal den Default zweig bevor ich überhaubt eine Eingabe machen kann. Ich suche den Fehler jetzt schon 2 Tage ich komme nur nicht drauf...
Hoffentlich kann mir da wer helfen

-
Gib doch mal den Wert der Eingabe aus.
cout << "Eingabe war " << (int)Auswahl << '\n';Im Eingabestrom befinden sich auch noch '\n' von der Entertaste (oder ähnliches)
-
ich bekomme obwohl ich den Wert ja definiere bekomme ich in einer for-Schleife zuerst den Wert 58 und danach den Wert -38
Dann wird erst ein wert abgefragt, wenn ich nun 1 eingebe wird der Zweig auch ausgeführt (Im zweig selber kommt die Variable "Auswahl" nicht vor) und mir auch 1 als Wert ausgegeben, wenn dann die for-Schleife wieder von vorne anfängt hat "Auswahl" wider den Wert -38 (Hier bekomme ich dann auch nur einmal den Default Zweig
Ich verstehe nur nicht warum nicht sofort eine Eingabe gefordert wird...

-
Das ist ein 'j' und ein '\n'
Die werden, aus einer vorherigen Eingabe, noch im Eingabestrom stehen.
Aber den Teil zeigst du gerade nicht.
-
achja, ich glaube ich habe mal irgendwo was darüber gelesen
Ist das Problem gelöst wenn ich den Eingabestrom zurücksetze?
Und wenn ja (und das auch geht) kannst du mir kurz erklären wie das geht?
-
Ich glaub ich habe das erstmal gelöst, ich hab jetzt statt getchar(), getch() genommern
wäre trozdem cool wenn mir wer erklären könnte wie ich den eingabepuffer zurücksetze
-
getchar()kommt aus dem C. Benutze entwederstd::cinoder noch besserstd::cinin Konjunktion mitstd::getlineundboost::lexical_cast.