使用enter继续和esc退出C ++

时间:2017-11-26 03:24:14

标签: c++

我是新手,如果按下输入则尝试继续,如果按下esc则退出。真的只是在路上询问知识,对我目前正在编写的程序来说并不是完全必要的。

#include <iostream>
#include <iomanip>

void StartMessage(char cont)
{
    while (cont != 27)
    {
    std::cout << "> PROTOCOL: Overloaded Hospital\n"
        << "> Running. . .\n"
        << "> Hello\n"
        << "> Enter to Continue, Esc to exit";
    std::cin.get();
    }
}


int main()
{

//Variables
char cont = '0';

//Constants

StartMessage(cont);

return 0;
}

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

3 个答案:

答案 0 :(得分:2)

#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;
         }
     }
}

答案 1 :(得分:0)

好吧,它无法检查是否有一个键被击中,如果没有则继续。你需要等到用户按下回车键 在你的代码中,你有一个无限循环,不要忘记更新cont。

cont = std::cin.get();

答案 2 :(得分:0)

正如其他人所说,终端将等待输入完整的测试行,然后是换行符,因此您不能仅使用C ++来实现此行为,而不依赖于平台。终端也不会接受只有换行符的空白输入。如果你想用C ++进行实时输入,你可以看一些库(比如SDL),但它可能不是一个初学者的好地方。

这样的事情会产生与你想要的相似的行为:

#include <iostream>


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


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


int main()
{



StartMessage();

return 0;
}

仅当您输入以escape开头的行时才会退出,但您必须按Enter键。最好使用像'q'这样的字符,以便在终端上更清晰地打印出来。