所以我使用了 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);
但它也挂起。我还想仅使用 iostream 或标准 posix 函数来执行此操作。
最佳答案
照常做:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
关于c++ - 如何使用 std::cin 清除 TTY 设置为原始模式的输入缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27138192/