我是新手,如果按下输入则尝试继续,如果按下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;
}
如上所述,我需要做些什么才能使其正常工作?
答案 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'这样的字符,以便在终端上更清晰地打印出来。