Так я использовал библиотеку termios поставить терминал в нестандартном режиме, что позволяет мне сделать это:Как очистить входной буфер с TTY, установленным в режим raw, используя std :: cin?
int getch() {
int ch;
do {
ch = cin.get();
} while(cin.eof());
return ch;
}
Это ждет одного символа, чтобы быть готовым в буфер ввода и возвращает его.
Но если я пытаюсь сделать это:
void clear_input_buffer() {
char ch;
while(!cin.fail()) {
cin.get(ch);
}
}
Он переходит в бесконечный цикл.
Каким будет способ очистки входного буфера? Я пробовал:
cin.clear();
cin.ignore(INT_MAX);
Но он также висит. Я также хотел бы сделать это, используя только iostreams или стандартные функции posix.