gpt4 book ai didi

c++ - 如何使用 std::cin 清除 TTY 设置为原始模式的输入缓冲区?

转载 作者:行者123 更新时间:2023-11-28 06:33:37 25 4
gpt4 key购买 nike

所以我使用了 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 函数来执行此操作。

最佳答案

照常做:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

关于c++ - 如何使用 std::cin 清除 TTY 设置为原始模式的输入缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27138192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com