c++ - 清除键盘缓冲区

标签 c++ linux buffer ncurses getch

在函数 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/

相关文章:

c++ - 在 iOS 的 cocos2d-x v3 中使用自定义字体

c++ - 是否需要销毁移出的对象?

c++ - 链接使用不同版本的 GCC 构建的目标文件

linux - Shell脚本创建linux用户帐户但密码错误

javascript - 从服务器发送媒体流到客户端

c - 使用指针在 C 中解析 TFTP 数据包的字符串

C++ 对齐数组的未对齐属性

python - 如何在Python的多个sheet中执行多个命令

linux - iis 就像 apache 中的模拟

java - 通过 SourceDataLine.write 播放声音 - 如何使用具有 double 值的 byte[]-Buffer