2014-02-11 34 views
3

我正在使用C++中的图形模式制作简单的程序,我无法处理输入。 我只需要一种方法来检查键盘,如果有任何键已被按下,将键值存储在一个变量, 与getch()的问题是,它等到直到任何键被按下,我需要程序保持如果用户没有给出输入,就去。 我已经做了一项研究,似乎有数百种这样做的方法。 哪一个最简单?简单的方法来处理键盘输入?

例如:循环开始,程序检查是否有任何输入并存储它,程序使用该输入,然后丢弃它再次开始循环。这将与getch()完美配合,不是吗?那么我希望循环也继续下去,如果这次没有按键。一种没有输入的默认模式,所以过程不会停止。

(我真的很喜欢与getch()等效,不会等待用户输入)。

的Windows,代码::块IDE,GCC编译器

是的,似乎的kbhit按预期方式工作,谢谢!

+2

哪种操作系统?如果在Linux上,请考虑[ncurses](http://en.wikipedia.org/wiki/Ncurses)...另请参阅[poll(2)](http://man7.org/linux/man-pages/man2 /poll.2.html)。并请编辑您的问题和标签来解释更多。 –

+6

什么是“C++中的图形模式”? –

+0

Using graphics.h – PIXEL

回答

0

使用int _kbhit(void);:这是一个非阻塞呼叫getch()(只适用于Windows)。 它也包含在conio.h

文件位置:http://msdn.microsoft.com/en-US/en-en/library/58w7c94c.aspx

(也有对* nix系统解决方法:http://cboard.cprogramming.com/c-programming/63166-kbhit-linux.html

+3

呃? “_kbhit”绝对没有“ISO”。主要的下划线和'conio.h'都是线索,在Linux下也需要“解决方法”。 –

+0

对不起,我刚刚从此页复制:http://msdn.microsoft.com/en-US/en-en/library/ms235390.aspx。根据MSDN,它符合ISO标准。 – lucasg

+3

\ *耸肩\ *也许他们的意思是它可以以一致的方式实施;我不知道。但grep C++标准的'_kbhit',你会发现它不在那里。如果是这样,它可能会在Linux上可用,而不是更少。 *'conio.h'不是标准头文件。这是一个微软的头文件。* –