在C ++中从控制台获取触发器

时间:2013-07-09 14:52:08

标签: c++ c user-interface

我正在为机器人编写应用程序。

应用程序所需的UI在下面的伪代码中描述:

 while(true){
      if (spacebar is not pressed){
           //do something
      }
      else{
           sleep(1); //wait for a second
      }     
 }

如果我使用cin或其他控制台输入读取功能,那么它将等待用户按某事。我如何确保它不等待获得任何输入?

我正在使用Ubuntu。但我不希望它是特定于操作系统的。

答案here似乎是特定于操作系统的。

2 个答案:

答案 0 :(得分:1)

终端级输入

与“标准输入/输出”流概念相比,您要求的内容与硬件(按键/按键释放)相当接近。因此,您的实现必须是特定于操作系统的。已经说过要使用的库是curses [1],它已经存在了很长时间,并且是很多Un * x平台的标准配置。 GNU ncurses风格几乎可以编译所有这些,它几乎在所有Linux环境中都是标准安装,默认情况下它没有安装,你可以找到它。它也适用于Windows(cygwin),os / 2和一堆嵌入式系统等。所以你应该能够使用诅咒编写一个相当便携的软件,做你想要的。

答案 1 :(得分:0)

你所要求的并不是很清楚。在if,是 条件基于是否输入了空格字符, 或者用户当前是否按住空格键?在 第一种情况,你需要像curses这样的东西(便携式) 这个库确实获得了输入的每个字符, 没有回声)。在第二,我不认为有 便携式解决方案。即使是非便携式,您也可能无法进行 如果您的程序正在从终端窗口读取,请获取它 (例如xterm);这种信息通常只存在 作为窗口事件,当您在程序中创建窗口时。