2016-07-03 12 views
0

Ich erwarte, dass das folgende Programm zweimal zum Warten auf meine Eingabezeichen stoppt. Das erste Mal, als es aufhörte und auf ein Zeichen tippte, tippte ich ein Zeichen und drückte Enter, aber die Konsole wartet nicht auf die Eingabe von 'char c', es endet einfach und gibt nur das aus, wofür ich getippt habe ' char b '. Warum das?Warum cin.get nur einmal auf Benutzereingabe warten

#include <iostream> 

    using namespace std; 

    int main() { 
     char b; 
     cin.get(b); 
     char c; 
     cin.get(c); 
     cout << b << c << endl; 
    } 
+3

Es wird 'Eingabe' als das zweite Zeichen zu akzeptieren. – Beta

+0

Ob Sie es wissen oder nicht, Sie haben mehr als ein Zeichen eingegeben. Zählen Sie, wie oft Sie eine Taste auf Ihrer Tastatur drücken. lass nichts * raus *. – WhozCraig

+0

Nicht wirklich ein Betrogener, aber Sie sollten die erste Antwort lesen. Sie müssen den Wagenrücklauf ignorieren. http://stackoverflow.com/questions/478258/why-is-ist-cin-reading-jammed –

Antwort

3

Die Frage lautet:

1) Einige Taste auf der Tastatur gedrückt wurde.

2) Eine andere Taste auf der Tastatur mit der Beschriftung "Enter" wurde gedrückt.

Pop-Quiz: Wie viele Zeichen wurden eingegeben?

Antwort: zwei Zeichen wurden eingegeben.

Die erste get() liest das erste Zeichen. Die zweite get() liest das zweite Zeichen, den Enter Schlüssel. (*)

(*) Die obige Antwort setzt ein non-multibyte Gebietsschema voraus.

1

Verwendung:

char b; 
cin >> b; 
char c; 
cin >> c; 
cout << b << c << endl; 
Verwandte Themen