在函数 boo()
中,我按下一个键,然后函数 doSthTimeConsuming()
被调用。
现在我在 doSthTimeConsuming()
期间按键。
问题是键被缓冲并且在下一次迭代中 boo()
将已经有一个输入。
我可以先在 boo()
中清除或禁用键盘缓冲吗?
void boo()
{
while(1)
{
c = getch();
switch(c)
...
break;
}
}
void doSthTimeConsuming()
{
usleep(1000000);
}
int main()
{
WINDOW* main_win = initscr();
cbreak();
noecho();
keypad(main_win, TRUE);
while(1)
{
boo();
doSthTimeConsuming();
}
return 0;
}
编辑:
我找到了解决方法,但我仍在寻找清除缓冲区的解决方案。
最佳答案
有一个函数就是为了这个目的:flushinp()
http://pubs.opengroup.org/onlinepubs/007908799/xcurses/flushinp.html
关于c++ - 清除键盘缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24365942/