2016-11-21 3 views
0

Also spielte ich mit cin.get() herum, um es besser zu verstehen.cin.get() zweimal aufrufen: unerwartetes Ergebnis?

char x[20]; 
cout << "Enter a name: "; 
cin >> x; 
cout << cin.get(); 

Wenn ich „Bob Smith“ eingeben, es gibt 32 - die ASCII-Nummer für Raum - was ich erwartet hatte, da sie die Zeichen nach dem Eingangsstrom ist.

Allerdings gibt dies "83 32" aus, was mich verwirrt. Warum kehrt es die Reihenfolge um "S" vor dem Raum auszugeben um?

Antwort

2

Wenn Sie cout << cin.get() << " " << cin.get() den folgenden Code zu ändern:

cout << cin.get(); 
cout << " " << cin.get(); 

Er druckt 32 83, die nicht rückgängig gemacht wird.

Dies liegt daran, dass C++ sie möglicherweise nicht in der richtigen Reihenfolge auswertet, wenn Sie zwei Bedingungen in eine Zeile eingeben.