使用Enter继续前进并ESC退出C

using enter to continue and esc to exit C++

本文关键字:ESC 退出 Enter 继续 使用      更新时间:2023-10-16

我是新手,如果按下ESC,请按ESS进行按下,并尝试继续。实际上只是要求道路上的知识,对于我目前正在编写的程序并不是完全必要的。

#include <iostream>
#include <iomanip>
void StartMessage(char cont)
{
    while (cont != 27)
    {
    std::cout << "> PROTOCOL: Overloaded Hospitaln"
        << "> Running. . .n"
        << "> Hellon"
        << "> Enter to Continue, Esc to exit";
    std::cin.get();
    }
}

int main()
{
//Variables
char cont = '0';
//Constants
StartMessage(cont);
return 0;
}

如上所述,我需要做什么才能使其正常工作?

#include<Windows.h>
#include<iostream>
int main()
{
    while(true)
    {    // GetAsyncKeyState take virtual key code
         if(GetAsyncKeyState(VK_ESCAPE) {
             std::cout << "escape key pressed" <<endl;
         }
         if(GetAsyncKeyState(VK_ENTER) {
             std::cout << "enter key pressed" << endl;
         }
     }
}

好吧,不可能检查键是否被击中并继续。您需要等到用户按Enter和在您的代码中,您有一个无限的循环,不要忘记更新续。

cont = std::cin.get();

正如其他人所说的那样,终端将等待输入完整的测试线,然后再进行newline,因此您无法真正使用C ,独立于C 平台。该终端也不接受新线的空白输入。如果您想使用C 实时输入,则可以查看(例如SDL),但这可能不是初学者的起点的好地方。

类似的东西会带来与您想要的类似的行为:

#include <iostream>

void StartMessage()
{
    std::string s;
    do
    {
    std::cout << "> PROTOCOL: Overloaded Hospitaln"
        << "> Running. . .n"
        << "> Hellon"
        << "> Esc to exit";

    std::cin >> s;
    } while(s[0] != 27);
   std::cout << "nExitingn";
}

int main()
{

StartMessage();
return 0;
}

这只有在从逃生开始的线开始时才会退出,但是您必须在Enter之后进行输入。为此使用类似" Q"的字符可能会更好,因此它在终端上更清楚地打印出来。