无阻塞实时检测键盘输入
本人小白一枚,第一次写博客,个位大佬多多指教。
之前一直使用opencv,里面的waitkey函数对于实时检测键盘输入还是比较友好。但是最近只用c++开发之后发现不会怎么实现无阻塞读取键盘输入。查资料之后初步发现有两种方法。第一个方法是_kbhit()函数(也就是非阻塞键盘检测输入)。第二个是多线程实现,用一个单独的线程读取键盘输入。下面给出两种方法的代码。测试代码是做一个简单的随机数字生成工具。
第一个方法代码:
#include <iostream>
#include <conio.h>
using namespace std;int main()
{cout << "==============================" << endl;cout << " 随机数字生成器 " << endl;cout << " Author:DLG " << endl;cout << " Date:2020/4/18 " << endl;cout << "==============================" << endl;cout << "按Esc键退出" << endl;int all_number;cout << "总标号数为:" << endl;cin >> all_number;cout << "按空格键选择" << endl;for (int i = 0; i < all_number; i++){//cout << i + 1 << endl;if (_kbhit()){int key = _getch();if(key == ' ') cout << "编号为" << i << endl;else if (key == 27) break;}if (i == all_number - 1){i = 0;}}
}
代码效果图如下:
第二种方法:
#include <iostream>
#include <thread>
using namespace std;char key;
void test()
{//cout << "线程开启" << endl;cin >> key;
}int main()
{cout << "==============================" << endl;cout << " 随机数字生成器 " << endl;cout << " Author:DLG " << endl;cout << " Date:2020/4/18 " << endl;cout << "==============================" << endl;cout << "按q键退出" << endl;int all_number;cout << "总标号数为:" << endl;cin >> all_number;cout << "按s键选择" << endl;for (int i = 0; i < all_number; i++){thread t1(test);t1.detach();//cout << i + 1 << endl;//cout << key;if (key == 's') cout << i + 1 << endl;else if (key == 'q') break;if (i == all_number - 1){i = 0;}key = '\0';}
}
效果图:
第二种方法由于是一开始学习多线程,使用方法上可能有些不足,希望大佬多多指教。
无阻塞实时检测键盘输入相关推荐
- python检测键盘输入_python实时检测键盘输入函数的示例
在嵌入式.尤其是机器人的python编程中,经常需要实时检测用户的键盘输入来随时控制机器人,这段代码可以帮助我们提取用户输入的字符,并在按下键盘的时候作出反应. import sys import t ...
- python检测键盘按键命令_python实时检测键盘输入函数的示例
在嵌入式.尤其是机器人的python编程中,经常需要实时检测用户的键盘输入来随时控制机器人,这段代码可以帮助我们提取用户输入的字符,并在按下键盘的时候作出反应. import sys import t ...
- 【C_socket】select检测键盘输入实现自由聊天
title: [C_socket]select检测键盘输入实现自由聊天 sticky: 3 top_img: keywords: "C,socket" cover: descrip ...
- update与fixedupdate检测键盘输入的出现的问题
先看看二者的区别 unity默认设置中,fixedupdate调用频率为50,在这个情况下,它的调用次数一般是比update要高的. 同:当MonoBehaviour启用时,其在每一帧被调用.都是用来 ...
- python检测键盘输入termios、等待按键超时检测
试了很多方案都不行或者不好用.win10+linux可以用的方法有pygame和termios pygame方法参考:https://blog.csdn.net/qxqxqzzz/article/de ...
- python实时检测键盘输入函数
在嵌入式.尤其是机器人的python编程中,经常需要实时检测用户的键盘输入来随时控制机器人,这段代码可以帮助我们提取用户输入的字符,并在按下键盘的时候作出反应. import sys import t ...
- OnKeyPress事件和Javascript检测键盘输入
对于有些时候,我们需要检测用户键盘输入的键盘信息,来处理一些相应的事件. 这里田子建议使用OnKeyPress=""事件来处理.相类似的还有OnKeyUp和OnKeyDown事件, ...
- 监控linux终端键盘输入,Linux内核实时监控键盘输入
刚毕业那会儿,VC6学习MFC,总得来点儿好玩的东西才能继续下去,毕竟不是科班出身,得完全靠意义去驱动-那个时候认识了键盘钩子,鼠标钩子之类: https://blog.csdn.net/dog250 ...
- Linux内核实时监控键盘输入
刚毕业那会儿,VC6学习MFC,总得来点儿好玩的东西才能继续下去,毕竟不是科班出身,得完全靠意义去驱动-那个时候认识了键盘钩子,鼠标钩子之类: https://blog.csdn.net/dog250 ...
最新文章
- Android Things揭开面纱
- struts2的处理流程
- ssl2648-线段树练习5【线段树】
- eclipse--android开发环境搭建教程
- Web开发人员应当知道的15个开源项目
- 电脑rar文件打开方式_怎么压缩文件,如何压缩文件?压缩软件哪个好?
- JS设置弹出小窗口。
- 应用PIC16F1938中IIC读取LM75A温度
- Java基础Lambda表达式【四】
- 信息安全期末复习整理
- 关于DoIP 协议的理解
- linux内核调度 宿主机,Qemu虚拟机与宿主机之间文件传输
- 微软个人云端服务器在哪里找,云端的服务器在哪里
- 由save is not vaild without active transcation引发的问题
- 电路不挂科——四小时学完电路原理(猴博士学习笔记1)
- linux计划任务1
- 气象雷达地物杂波产生的原因
- 直捣三星老巢,小米携红米Note 5进军韩国市场!
- 把 VS Code 打造成 Java 开发 IDE,也挺爽!
- 将yuv图像转为.jpg文件
热门文章
- 双幂数列(C++)M={2^x,3^y|x=0,y=0}
- 让家长巧限孩子玩网络游戏、看网络电影
- 游戏行业如何做防护?游戏被攻击怎么办?
- mx250显卡天梯图_MX250和150差别大吗?MX250和MX150区别对比 (全文)
- 全国公立医院病案首页上报系统(适用于二、三级医院)
- QT 黑色风格+白色风格+淡蓝色风格样式表。
- 零售航母沃尔玛公布业绩:喜忧参半
- 特斯拉Q4财报:底部反弹70%,为信仰打call
- C语言项目(四)——基于Linux系统下的带有GUI界面的即时通信软件
- 软件供应链安全——组件漏洞的治理