因此,我使用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函数来完成这个任务。
发布于 2014-11-26 00:23:33
就像往常一样:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');https://stackoverflow.com/questions/27138192
复制相似问题