所以我使用了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函数来执行此操作。
答案 0 :(得分:1)
按常规做法:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');