0

所以我使用了 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 函数来做到这一点。

4

1 回答 1

1

照常做:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
于 2014-11-26T00:23:33.807 回答