如何在不按ENTER和不使用getch()或getche()的情况下读取C++中的字符

How do I read character in C++ without pressing ENTER and without getch() or getche()?

本文关键字:getche 读取 字符 C++ 情况下 getch ENTER      更新时间:2023-10-16

在C中,我可以使用getch()来获取输入,而无需用户按enter键C++中是否有一个标准函数可以执行getch()的函数我不想使用conio.h或其他特定于平台的库。

while (choice!='q')
{
    cout << "Enter a six digit number(0 to 999999)";
    cin >> input;
    start.controller(input);
    cout << "Press r to repeatnPress q to quit";
    cin >> choice;
}

我只想重复这个过程,直到用户按下q。现在用户必须按下ENTER键。

否。标准C++库不包括任何类型的终端管理。它甚至不认为您的终端除了线路之外还有任何输入功能。您需要一个库或代码来了解您的特定终端是如何工作的。

这在一定程度上被Marshall Cline:的C++常见问题解答所涵盖

[15.17]我如何判断在用户按下ENTER键?

这不是一个标准的C++特性--C++甚至不需要您的系统有一个键盘!。这意味着每个操作系统和供应商都会有点不同。

有关详细信息,请阅读编译器附带的文档在您的特定安装上。

(顺便说一句,UNIX上的过程通常有两个步骤:将终端设置为单字符模式,然后使用select()或poll()来测试是否按下了某个键。你也许可以适应代码。)

C++标准还规定了§1.9[介绍执行]:

1本国际标准中的语义描述定义了参数化的不确定性抽象机。这个国际标准对一致性的结构没有要求实现。特别是,他们不需要复制或模仿抽象机器的结构。相反,一致性实施被要求(仅)模仿抽象的可观察行为机器,如下所述5

8对一致性实施的最低要求是:

 nbsp mdash[..]

 nbsp mdash;交互式设备的输入和输出动态应以这样一种方式进行,即在程序等待输入之前实际交付提示输出交互式设备的构成是由实现定义的