在没有输入和没有GETCHE()或GETCH()的情况下,如何读取C++中的字符?

在没有输入和没有GETCHE()或GETCH()的情况下,如何读取C++中的字符?,c++,console-application,cin,c++-standard-library,getch,C++,Console Application,Cin,C++ Standard Library,Getch,在C中,我可以使用getch获取输入,而无需用户按enter键。在C++中是否有执行GCH函数的标准函数。我不想使用conio.h或其他特定于平台的库 while (choice!='q') { cout << "Enter a six digit number(0 to 999999)"; cin >> input; start.controller(input); cout << "Press r to repeat\nPr

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

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

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

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

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

这在一定程度上被Marshall Cline所涵盖:

[15.17]我怎样才能知道{如果按了一个键,是哪一个键}被按下了 用户是否按ENTER键

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

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

顺便说一下,UNIX上的过程通常有两个步骤:第一步 将终端设置为单字符模式,然后使用选择或 轮询以测试是否按下了某个键。你也许能适应这个 代码

C++标准也称为1.9(执行):

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

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

-[…]

-交互设备的输入和输出动态应在程序等待输入之前实际发送提示输出。交互设备的构成由实现定义


这在一定程度上被马歇尔·克莱恩的著作所涵盖:

[15.17]我怎样才能知道{如果按了一个键,是哪一个键}被按下了 用户是否按ENTER键

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

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

顺便说一下,UNIX上的过程通常有两个步骤:第一步 将终端设置为单字符模式,然后使用选择或 轮询以测试是否按下了某个键。你也许能适应这个 代码

C++标准也称为1.9(执行):

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

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

-[…]

-交互设备的输入和输出动态应在程序等待输入之前实际发送提示输出。交互设备的构成由实现定义


不,标准库不提供此功能。@remyabel猜想我必须让用户按ENTER!!您不必使用特定于平台的库。有些库覆盖的平台比您可能关心的要多。当然,它们是通过抽象出特定于平台的细节来实现的。但标准库也会这样做。它是特定于操作系统的。不,标准库不提供此功能。@remyabel我想我必须让用户按ENTER!!您不必使用特定于平台的库。有些库覆盖的平台比您可能关心的要多。当然,它们是通过抽象出特定于平台的细节来实现的。但是标准库也会这样做。它是特定于操作系统的。所以我必须使用依赖于平台的库,如conio.h或ncurses.h等。。。正当谢谢你的回答,否则我会嘲笑谷歌@NidhinDavid您必须使用能够理解您正在使用的特定终端的库
因为终端是不同的,所以我必须使用依赖于平台的库,比如conio.h或ncurses.h等等。。。正当谢谢你的回答,否则我会嘲笑谷歌@NidhinDavid您必须使用一个能够理解您正在使用的特定终端的库,因为终端是不同的。