2014-02-11 36 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'不是標準頭文件。這是一個微軟的頭文件。* –