そこで、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 関数のみを使用してこれを行いたいと思います。