代码之家  ›  专栏  ›  技术社区  ›  Saladin Akara

使用kbhit()暂停终端输出?

  •  1
  • Saladin Akara  · 技术社区  · 15 年前

    今天我在大学参加了我的第一次“编程基础”实验课。但有一件事让我觉得很奇怪:使用 while(! _kbhit())

    这是最好的办法吗?使用时需要注意什么?我的导师是不是疯了?我只是问,因为它看起来像一个脏黑客,我从来没有见过它在任何C++代码片段我看过。

    将问题标记为家庭作业,因为它与学校有关,但实际上不是家庭作业。如果这个问题作为CW更好,让我知道。

    2 回复  |  直到 15 年前
        1
  •  2
  •   please delete me please delete me    15 年前

    getchar :

    getchar();
    

    您可能需要在输入字符后按Return键,具体取决于 stdin 的缓冲模式。你可以用 setvbuf 但我个人总是按回车键。

    您也可以使用C++ iFix流。在这种情况下,你应该把它称为:

    std::ios::sync_with_stdio(true);
    
        2
  •  2
  •   You    15 年前

    使用 conio.h pause 或类似的公用事业 system cin :

    #include <iostream>
    #include <limits>
    
    /* Either of these would work, AFAIK */
    void pause() {
        std::cin.ignore(std::numeric_limits<std::streamsize>::max());
        std::cin.get();
    }
    
    void pause() {
        std::cin.ignore(std::cin.rdbuf()->in_avail());
        std::cin.get();
    }
    
    void pause() {
        std::cin.sync();
        std::cin.get();
    }