Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: [C++] "cin" wird übersprungen

  Alt 10. Nov 2007, 14:35
Hi,

danke. Ganz steige ich noch nicht durch, cin ist komplexer als ich dachte.

Code:
do
{
    while (! (cin >> eingabe))
    {
        cin.clear();                 // das löscht die Fehler-Flags (welche auch immer das sind)
        while (cin.get() != '\n');   // das liest die Zeichen im Puffer so lange ein (und entfernt sie daraus),
                                      // bis ein "\n" (Return) kommt
        cout << "\n\t --> Fehleingabe!\n";
    }
}
while (! ((eingabe == 1) || (eingabe == 2) || (eingabe == 3) || (eingabe == 4)));
Was die diese Zeile

Code:
while (! (cin >> eingabe))
genau macht, konnte ich nicht herausfinden. Ich weiß auch nicht, wie der <<-Operator heißt, daher kann ich auch nicht gezielt suchen.

Das Problem bei dem Code ist jedoch noch, dass bei Eingabe von Buchstaben die Meldung "Fehleingabe" ausgegeben wird, wenn ich jedoch ganze Zahlen eingebe, sehe ich keine Meldung, muss aber weitere Zahlen eingeben, bis sie 1, 2, 3 oder 4 ist. Ich denke, für diesen Fall brauche ich dann doch die boolsche Variable ersterDurchlaf.
Daher vermute ich, dass der boolsche Ausdruck der genannten Zeile wahr ist, wenn die Zuweisung des Eingabewerts zur Variablen eingabe erfolgreich war, es sich also um den selben Datentyp handelt.

Ist das richtig?

Grüße
  Mit Zitat antworten Zitat