按任意键C ++时随时调用函数

时间:2013-11-08 16:46:26

标签: c++

有没有办法让我的程序在c ++中显示一条消息(如快速指南,使用cout<<"Instructions";)每次按下h,但保持序列?

示例:

#include <everything>
using namespace std;
int main{
    {Event 1}
    {Event 2}
    {Event 3}
}


~Program running~
(Event 1) runs
*user presses h*
*shows help automatically*
(event 2) runs
(event 3) runs
exit

我已搜索但无法在c ++中找到该怎么做。

3 个答案:

答案 0 :(得分:1)

如果您在任何类似Linux / Unix的系统上运行,您可以使用主程序中的信号中断处理程序处理'h'按键,例如:

#include <csignal>
// ...
void signalHandler( int signum ) {
    cout << "Here your help...\n";
}
int main() {
    // kick off your other thread to run select()...
    signal(USER1, signalHandler);
    // ...
}

然后在您启动的另一个帖子中运行,运行在select()上调用stdin然后(在有输入时)read()的代码来获取已输入的字符,如果它是h然后将USER1信号发送到您的主线程。

答案 1 :(得分:1)

因为我最近加入了SO并且没有足够的声誉来评论现有的答案,所以我必须开始一个新的答案。

我同意@ paul-evans的回答,如果你想学习操作系统过程管理和信号处理的基础知识,我想分享幻灯片:https://www.cs.drexel.edu/~wmm24/cs283/lectures/procmgt.ppt,它基于经典的第8章CSAPP(计算机系统程序员的预期)

答案 2 :(得分:0)

以下是游戏内菜单的一些代码。用户按下ESC按钮以启动菜单,按F8退出游戏

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

using namespace std;

#define KB_UP 72
#define KB_DOWN 80
#define KB_LEFT 75
#define KB_RIGHT 77
#define KB_ESCAPE 27
#define KB_F8 66

void gamemenu()
{
    cout<<"  \n";
    cout<<"[1] Resume Game  \n";
    cout<<"[2] Save Game  \n";
    cout<<"[3] Exit Game  \n";
}

int main()
{
   int KB_code=0;

   cout<<"Game menu 0.01 beta\n\n";
   cout<<"press F8 to Exit\n";
   cout<<"press ESC for Game menu \n";

   while(KB_code != KB_F8 )
   { 
     if (kbhit())
      {
            KB_code = getch();
            //cout<<"KB_code = "<<KB_code<<"\n";

            switch (KB_code)
            {

                case KB_ESCAPE:

                    gamemenu();

                break;

                case KB_LEFT:
                           //Do something
                break;

                case KB_RIGHT:
                           //Do something                     
                break;

                case KB_UP:
                           //Do something                     
                break;

                case KB_DOWN:
                           //Do something                     
                break;

            }        

      }
  }

  return 0;
}

输出:

Game menu 0.01 beta

press F8 to Exit
press ESC for Game menu

[1] Resume Game
[2] Save Game
[3] Exit Game