按C++键时随时调用函数
Anytime function call when pressing a key C++
有没有办法让我的程序在每次按下 h 时都显示一条消息(如快速指南,使用 cout<<"Instructions";
),但保留序列?
例:
#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++ 中做到这一点。
如果你在任何类似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);
// ...
}
然后在你启动的另一个线程中运行,运行在stdin
上调用select()
的代码,然后(当有输入时)read()
获取已输入的字符,如果它是h
则将USER1
信号发送到您的主线程。
因为我最近加入了SO,没有足够的声誉来评论现有的答案,所以我必须开始一个新的答案。
我同意@paul-Evans的回答,如果你想学习操作系统进程管理和信号处理的基础知识,我想分享幻灯片:https://www.cs.drexel.edu/~wmm24/cs283/lectures/procmgt.ppt,它基于经典CSAPP(计算机系统程序员的Prespective)的第8章
下面是游戏内菜单的一些代码。用户按下 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 betann";
cout<<"press F8 to Exitn";
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
相关文章:
- 如何用参数值调用函数(仅在运行时已知)
- 从python中调用C++函数并获取返回值
- 当使用通配符和null指针调用函数时,对输出的说明
- 从R调用C++函数并对其进行集成时出错
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 如何在qt中从另一个类调用函数
- 在 COUT 语句中使用 COUT 调用函数
- 如何从线程中的不同模块调用函数?
- C++从函数指针数组调用函数
- 当 A 在 for 循环中调用函数 B 时,如何计算函数 A 的空间复杂度?
- 如何在 C/C++ 中从外部库调用函数
- 如何使用运算符在同一行中多次调用函数
- 是否可以创建一个从不同类调用函数的线程?
- 无法为类成员调用函数
- 如何从另一个标头 c++ 调用函数
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 如何只允许在调用函数 B 后调用函数 A?
- 我可以这样调用函数吗?
- 如何在 c++ 的类中递归调用函数方法?
- 为什么在指向对象的迭代器上调用函数不允许我更改对象本身?