所以我使用了 termios 库将终端置于原始模式,这允许我这样做:
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 函数来做到这一点。