C++程序应该在他按下'esc'后立即退出

The C++ program should exit as soon as he presses 'esc'

本文关键字:esc 退出 程序 C++      更新时间:2023-10-16

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

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

我希望程序在他按下'esc'键后立即退出。此外,用户不应在按下'esc'键后再按下'enter'

在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++如何使用ESC按钮终止程序。这个问题的另一个解决方案也在链接的问答中提供。

这种检测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;
}