按下'esc'后,C ++程序应立即退出

时间:2013-12-14 03:58:18

标签: c++ exit cin

我有一个程序,其中有一个看起来像这样的代码:

int Element[15];
cout << "Enter name/symbol of the Element: ";
cin >> Element;

我希望程序在按下'esc'键后立即退出。此外,用户不必在按下'esc'键后按'enter'键。那怎么办?

1 个答案:

答案 0 :(得分:1)

在Windows中,您可以使用Windows API执行此操作。 GetAsyncKeyState(VK_ESCAPE)可帮助您检查是否按下了Escape。你可以尝试这样的事情:

#include <windows.h>
#include <iostream>

using namespace std;

int main() {

  int Element[15];
  HANDLE h;

  do {  
    h = GetStdHandle(STD_INPUT_HANDLE);
    if(WaitForSingleObject(h, 0) == WAIT_OBJECT_0) {
      cout << "Enter name/symbol of the Element: ";
      cin >> Element;
    }
  } while(GetAsyncKeyState(VK_ESCAPE)==0);

  return 0;
}

我遇到了同样的问题,并以上述方式解决了这个问题。这个问题给了我很多帮助(处理的想法来自公认的答案):C++ how do I terminate my programm using ESC button。该问题的另一个解决方案也在该链接的问题答案中提供。

检测Esc键的方式也应该有效(但是,我没有正确测试):

#include <iostream>
#include <conio.h>
#include <ctype.h>

using namespace std;

int main() {
  int c = _getcha();
  while(c != 27) {
    // do stuff
    c = _getcha();
  }

  return 0;
}