0

そこで、termios ライブラリを使用して端末を raw モードにしました。これにより、次のことが可能になります。

int getch() {
  int ch;
  do {
    ch = cin.get();
  } while(cin.eof());
  return ch;
}

これは、入力バッファで 1 文字の準備が整うのを待ち、それを返します。

しかし、私がこれをやろうとすると:

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 に答える