您知道该功能的任何替代方法getch()
吗?因为它来自 Conio 库(不是标准的),我想知道 C++ 是否有任何标准替代方案。
我有这个代码:
do
{
tecla = getch();
} while (tecla != TECLA_ARRIBA && tecla != TECLA_ABAJO && tecla != ENTER);
我不想暂停,我想像示例代码一样捕获数据。
注意:否则,任何模拟该功能的代码?
您知道该功能的任何替代方法getch()
吗?因为它来自 Conio 库(不是标准的),我想知道 C++ 是否有任何标准替代方案。
我有这个代码:
do
{
tecla = getch();
} while (tecla != TECLA_ARRIBA && tecla != TECLA_ABAJO && tecla != ENTER);
我不想暂停,我想像示例代码一样捕获数据。
注意:否则,任何模拟该功能的代码?
我知道您想要的是绕过输入缓冲区
std::cin
从键读取直接输入。在这种情况下,答案很简单:没有标准方法,因为它取决于您使用的操作系统。
如果您使用的是Windows控制台仿真,您已经知道要使用什么:
conio.h
如果您使用图形应用程序,您别无选择,只能求助于操作系统提供的事件系统,或者您使用的最高级别的库。
最便携的方法是使用ncurses库。虽然它是 *nix 系统的本机,但它可以在 Windows 终端仿真器中使用。在第 11 章
NCURSES Programming HOWTO
,Interfacing with the keyboard
你有一个完整的例子。作为最后一个选项,如果您在 Linux 上,您可以将键盘设置为raw模式,直接访问它生成的事件。你有一个完整的例子
Grab Raw Keyboard Input
。你不能做你想做的事。至少不脱离 C++ 标准。
C++ 既不理解键盘也不理解控制台,而是理解标准输入和标准输出。这种概念的改变,虽然看起来微不足道,但有其含义:
留给您的唯一选择是拉取依赖于操作系统的库来执行此任务:
conio.h
(Windows)、ncurses
(Linux)、pdcurses
(Windows) 等。您可以使用
cin.get( );
该库iostream
并将这些对象放在您的手中cin, cout
。例子: