我有一个接受用户输入的小型控制台应用程序,我有以下循环不断要求用户输入,直到他们 (a) 输入他们的名字并按 enter 或 (b) 按转义键。出于某种原因,当他们按下转义键时,他们必须按下回车键,此时只有循环结束,控制台窗口仍然保持打开状态,我错过了什么?代码如下...
while (input.empty()) {
cout << "Enter Something";
getline(cin, input);
if (GetAsyncKeyState(VK_ESCAPE))
{
exit(EXIT_SUCCESS); // this should just close the console entirely, right?
}
}
最佳答案
GetAsyncKeyState
在调用 getline
之后被调用。 getline
等待用户键入一些数据并按回车键(或者更确切地说,它等待从标准输入中读取以换行符结尾的一行数据)。只有在 getline
完成后,此代码才会检查是否按下了 ESC 键。
请参阅此问题以了解如何完成您想要完成的任务:How to read until ESC button is pressed from cin in C++
关于C++ 控制台未按预期退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25657328/