2013-01-14 83 views
1

我需要一種以非阻塞方式調用std :: cin的跨平臺方式。我知道這是可能的線程,但也許有更好的選擇?事實似乎是這樣的矯枉過正。具有無阻塞控制檯輸入的跨平臺方式

+0

AFAIR [ncurses](http://en.wikipedia.org/wiki/Ncurses)提供了此功能。但我不確定什麼更多_'overkill'_,取決於定義。 –

+0

我知道ncurses,但不幸的是我需要跨平臺解決方案。 – user1873947

+0

你是否已經研究過一些函數? http://www.cplusplus.com/reference/istream/istream/readsome/ – FrankieTheKneeMan

回答

2

標準C和C++不提供任何方法來執行非阻塞I/O。通常,C和C++運行時環境根本沒有看到任何輸入,直到用戶按下密鑰<ENTER>

所以,唯一的選擇是真的使用單獨的線程來讀取輸入,或使用特定於平臺的方法來執行非阻塞輸入(可能包裝,以便在移植到不同的端口時可以輕鬆替換該部分像ncurses這樣的庫爲這些平臺提供了這些輸入方法的預包裝)。

+0

有幾種不同的平臺可以使用「ncurses」和類似的庫,其中包含處理「無密鑰獲取密鑰」和其他類似事情的代碼。 –