Рассмотрим следующий код:Как правильно очистить входной буфер после того, как я получу следующий символ, не нажимая дважды? C++
#include <iostream>
using namespace std;
int main()
{
char input;
while (1) {
cout << "Enter: ";
cin.get(input);
cin.ignore(100, '\n'); //requires another `enter`
}
return 0;
}
Я хочу, чтобы получить следующий символ в буфер ввода, и я хочу, чтобы входной буфер будет очищен после этого. Я знаю, что мы можем использовать cin.ignore()
, чтобы сделать очистку, однако, если бы я использовал его, то мне нужно будет дважды нажать ввод (в случае ввода enter
) для ввода моего ввода! Как я могу предотвратить это?
почему не делать, если (вход == '\ п') продолжить; вместо игнорирования? –
Вы не можете «очистить» входной буфер, вы должны каким-то образом использовать символы. – wilx
@Pierre: Это неправильно. См. Http://stackoverflow.com/a/2979217/341065. – wilx