本人小白一枚,第一次写博客,个位大佬多多指教。
之前一直使用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';}
}

效果图:

第二种方法由于是一开始学习多线程,使用方法上可能有些不足,希望大佬多多指教。

无阻塞实时检测键盘输入相关推荐

  1. python检测键盘输入_python实时检测键盘输入函数的示例

    在嵌入式.尤其是机器人的python编程中,经常需要实时检测用户的键盘输入来随时控制机器人,这段代码可以帮助我们提取用户输入的字符,并在按下键盘的时候作出反应. import sys import t ...

  2. python检测键盘按键命令_python实时检测键盘输入函数的示例

    在嵌入式.尤其是机器人的python编程中,经常需要实时检测用户的键盘输入来随时控制机器人,这段代码可以帮助我们提取用户输入的字符,并在按下键盘的时候作出反应. import sys import t ...

  3. 【C_socket】select检测键盘输入实现自由聊天

    title: [C_socket]select检测键盘输入实现自由聊天 sticky: 3 top_img: keywords: "C,socket" cover: descrip ...

  4. update与fixedupdate检测键盘输入的出现的问题

    先看看二者的区别 unity默认设置中,fixedupdate调用频率为50,在这个情况下,它的调用次数一般是比update要高的. 同:当MonoBehaviour启用时,其在每一帧被调用.都是用来 ...

  5. python检测键盘输入termios、等待按键超时检测

    试了很多方案都不行或者不好用.win10+linux可以用的方法有pygame和termios pygame方法参考:https://blog.csdn.net/qxqxqzzz/article/de ...

  6. python实时检测键盘输入函数

    在嵌入式.尤其是机器人的python编程中,经常需要实时检测用户的键盘输入来随时控制机器人,这段代码可以帮助我们提取用户输入的字符,并在按下键盘的时候作出反应. import sys import t ...

  7. OnKeyPress事件和Javascript检测键盘输入

    对于有些时候,我们需要检测用户键盘输入的键盘信息,来处理一些相应的事件. 这里田子建议使用OnKeyPress=""事件来处理.相类似的还有OnKeyUp和OnKeyDown事件, ...

  8. 监控linux终端键盘输入,Linux内核实时监控键盘输入

    刚毕业那会儿,VC6学习MFC,总得来点儿好玩的东西才能继续下去,毕竟不是科班出身,得完全靠意义去驱动-那个时候认识了键盘钩子,鼠标钩子之类: https://blog.csdn.net/dog250 ...

  9. Linux内核实时监控键盘输入

    刚毕业那会儿,VC6学习MFC,总得来点儿好玩的东西才能继续下去,毕竟不是科班出身,得完全靠意义去驱动-那个时候认识了键盘钩子,鼠标钩子之类: https://blog.csdn.net/dog250 ...

最新文章

  1. Android Things揭开面纱
  2. struts2的处理流程
  3. ssl2648-线段树练习5【线段树】
  4. eclipse--android开发环境搭建教程
  5. Web开发人员应当知道的15个开源项目
  6. 电脑rar文件打开方式_怎么压缩文件,如何压缩文件?压缩软件哪个好?
  7. JS设置弹出小窗口。
  8. 应用PIC16F1938中IIC读取LM75A温度
  9. Java基础Lambda表达式【四】
  10. 信息安全期末复习整理
  11. 关于DoIP 协议的理解
  12. linux内核调度 宿主机,Qemu虚拟机与宿主机之间文件传输
  13. 微软个人云端服务器在哪里找,云端的服务器在哪里
  14. 由save is not vaild without active transcation引发的问题
  15. 电路不挂科——四小时学完电路原理(猴博士学习笔记1)
  16. linux计划任务1
  17. 气象雷达地物杂波产生的原因
  18. 直捣三星老巢,小米携红米Note 5进军韩国市场!
  19. 把 VS Code 打造成 Java 开发 IDE,也挺爽!
  20. 将yuv图像转为.jpg文件

热门文章

  1. 双幂数列(C++)M={2^x,3^y|x=0,y=0}
  2. 让家长巧限孩子玩网络游戏、看网络电影
  3. 游戏行业如何做防护?游戏被攻击怎么办?
  4. mx250显卡天梯图_MX250和150差别大吗?MX250和MX150区别对比 (全文)
  5. 全国公立医院病案首页上报系统(适用于二、三级医院)
  6. QT 黑色风格+白色风格+淡蓝色风格样式表。
  7. 零售航母沃尔玛公布业绩:喜忧参半
  8. 特斯拉Q4财报:底部反弹70%,为信仰打call
  9. C语言项目(四)——基于Linux系统下的带有GUI界面的即时通信软件
  10. 软件供应链安全——组件漏洞的治理