Как я могу очистить поток ввода в C ++? - PullRequest
2 голосов
/ 14 июня 2011

Когда я пишу программу и использую -

cout << "A:"; 
cin >> string_var; 
cout << "B"; 
cin >> string_var2; 

Если между двумя входами на клавиатуре есть пробел (например, если отображается консоль:

A: _ (ожидание ввода), и я набрал a a, первый a перешел бы на string_var, а второй - на string_var2. Как я могу очистить поток ввода?

Ответы [ 2 ]

3 голосов
/ 14 июня 2011

Вместо cin >> string_var используйте cin.getline(string_var, 256, '\n'). Ваш текущий метод чтения ввода читает только до первого пробела. Использование метода getline приведет к чтению до символа \ n, когда пользователь нажимает ввод.

2 голосов
/ 14 июня 2011

Вы можете использовать cin.get() так:

cout << "A: "; 
cin >> string_var; 
// clear remaining stream input
while(cin.get() != '\n'); 

cout << "B: "; 
cin >> string_var2;
...