【发布时间】:2014-01-20 11:39:41
【问题描述】:
this 问题的后续行动。
如何清除输入缓冲区?
sleep(2);
// clear cin
getchar();
我只想要最后输入的字符,我想丢弃在程序休眠时输入的任何输入。有没有办法做到这一点?
另外,我不想主动等待清除cin,因此我不能使用ignore()。
我的方法是获取缓冲区的当前大小,如果它不等于 0,则静默清空缓冲区。但是,我还没有找到获取缓冲区大小的方法。 std::cin.rdbuf()->in_avail() 总是为我返回 0。 peek() 也会主动等待。
我不想使用 ncurses。
【问题讨论】:
-
所以
sleep完成并且在getchar开始使用之前输入一个字符。这算不算? -
这是一个我还没有考虑过的案例,但对于这个问题暂时不重要。
-
@EdHeal:我个人认为这种情况和“在睡眠期间”实际上无法区分,特别是因为
sleep(2)是“2 秒或更多”。
标签: c++