【问题标题】:Is there a way to read input directly from the keyboard in standard C++? [duplicate]有没有办法在标准 C++ 中直接从键盘读取输入? [复制]
【发布时间】:2016-09-20 14:58:48
【问题描述】:

我知道有std::cin,但这需要用户输入一个字符串,然后按ENTER。有没有一种方法可以简单地获取按下的下一个键而无需按 ENTER 确认

【问题讨论】:

    标签: c++ input console keyboard


    【解决方案1】:

    您要查找的内容与操作控制台有关,并且与操作系统相关。如果您使用的是基于 UNIX 的操作系统,请查看 curses library,而在 Windows 中,<conio.h> 中有 getch()kbhit() 函数。

    【讨论】:

      【解决方案2】:

      看起来most upvoted answer 有点过时了。

      ncurses 库(基于提到的curses library)是一个可移植的实现,可用于基于 unix 和 linux 的操作系统、windows 等。

      它支持多种终端接口。

      【讨论】:

        【解决方案3】:

        你可以使用

        #include <conio.h>
        

        然后用这种情况捕获字符

        char c;
        if (_kbhit())
        {
          c = getch();
          switch(c)
          {
          case ‘\0H’ :
          cout << "up arrow key!" << endl;
          break;
          }
        }
        

        注意:我没试过……记得把整个东西放到一个“while(true)”中去测试。

        【讨论】:

        • 我假设 和 _kbhit() 是 windows/DOS 特定的?
        • 另外,'\OH' 会翻译成向上箭头吗? (如,向下、向左和向右箭头的值是多少?)
        • @camh:是的,afaik @Kean64:如果我没记错的话,有像 ARROW_KEY_UP 这样的常量,请尝试一下。不在我的开发电脑前...
        • 这不是标准的 C++
        猜你喜欢
        • 2021-01-01
        • 1970-01-01
        • 2013-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-11
        相关资源
        最近更新 更多