這聽起來有些可笑,但我怎麼能可以從cin在C讀取一個字符++(直到進入被按下時,只有一個字符)? 我試過操作符>>,get(),getchar(),但是它們都讀取整行。
3
A
回答
3
_getche() function做你想做的。
+2
是的,但他沒有要求可移植性,他在上面的評論中指出他使用Win7。此外,正如亞當Shiemke和羅布指出,要獲得鍵盤事件,你將需要一個操作系統特定的功能。 – 2012-04-02 18:30:22
3
cin
是緩衝輸入。你想要「無緩衝」的輸入。它可以在不同平臺上有所不同,除非您直接使用文件。
像這樣的東西可能會有所幫助:
http://www.cplusplus.com/forum/beginner/3329/
[編輯],請記住,使用「緩衝」訴「無緩衝」是一個設計決策,都是合法的。 cin
上的「緩衝輸入」的「默認值」很有意義,因爲用戶將「退格」以修正輸入行,並且不希望那種「混亂」給節目提供食物。 (而且,一般來說,像文件一樣的「緩衝輸入」可以更有效率。)
2
雖然這是操作系統特定的,在類UNIX操作系統,您可以使用termios的界面到終端上禁用輸入緩衝,將其置於非規範方式:
termios t;
tcgetattr(STDIN_FILENO, &t);
t.c_lflag &= ~ICANON;
tcsetattr(STDIN_FILENO, TCSANOW, &t);
詳情請參閱termios(3) 。
相關問題
- 1. C++ cin.getline只讀取一個字符
- 2. C#SqlDataReader只讀取1行
- 3. C++字符串類是隻讀的嗎?
- 4. 在C中指定一個char爲只讀字符?
- 5. \ t只考慮1個字符?
- 6. Java - JSONObject只解析1個字符串?
- 7. 只讀一個或兩個字符串
- 8. 只讀在C#
- 9. 在C中讀取兩個字符#
- 10. C++「cin」只讀取第一個字
- 11. SqlBulkCopy的只讀取255個字符
- 12. Arduino只讀取一個字符。
- 13. MongoDb C#只讀字段
- 14. asp.net,c#.net只讀字段
- 15. 如何讀取一次超過1個字符的字符串
- 16. 只有1個字符,而不是整個字從JavaScript
- 17. 在C#中只得到3個字符串字符串
- 18. C#回滾Streamreader 1個字符
- 19. 爲什麼在c編程中通過putchar輸入超過1個字符時,putchar只顯示一個字符?
- 20. 在C#WebBrowser中使用只讀字段
- 21. 只讀文件中的字母字符-C++
- 22. 只允許在TextBox中使用1個字符
- 23. 1個字符只有foreach循環結果在PHP
- 24. 將多個字符串作爲一個字符串讀取? C++
- 25. C#只寫最後一個字符串
- 26. C++/win32 - LB_GETTEXT只返回一個字符
- 27. 爆炸一個字符串在2個換行符反對只有1
- 28. recv()只讀取1個字節(使用winsock實現FTP)
- 29. C++從1個字符轉換爲字符串?
- 30. 字符串是由1個字符關閉 - C
您指定的所有方法都從'std :: cin'讀取一個字符。但是,該字符不能從O/S獲得,直到按下ENTER鍵。 – 2012-04-02 18:19:23
你在使用什麼操作系統?正如羅布所說,操作系統持有輸入,直到。要發生鍵盤事件,您需要一個操作系統特定的庫。 –
2012-04-02 18:22:03
@Robᵩ所以你說什麼是不可能只讀一個字符?我所知道的所有其他語言都有這個功能。 – Dave 2012-04-02 18:23:28