C ++控制台没有按预期退出

时间:2014-09-04 04:30:55

标签: c++

我有一个小型控制台应用程序,它接受用户输入,我有以下循环,不断询问用户输入,直到他们(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?
    }

} 

2 个答案:

答案 0 :(得分:2)

调用GetAsyncKeyState后调用

getlinegetline等待用户键入一些数据并按Enter键(或者更确切地说,它等待从标准输入读取以换行符结尾的数据行)。只有在getline完成后,此代码才会检查是否按下了ESC键。

请参阅此问题,了解您正在尝试完成的工作:How to read until ESC button is pressed from cin in C++

答案 1 :(得分:0)

我认为在If测试之前放置getline()不允许后者执行,因为前者会导致阻塞I / O.试试这个:

while (input.empty()) {
    cout << "Enter Something";
    if (GetAsyncKeyState(VK_ESCAPE)) {
        exit(EXIT_SUCCESS);        
    }
    getline(cin, input);
}