这可能听起来很荒谬,但是如何在c ++中读取cin中的一个字符(直到输入被按下,只有一个字符)? 我已经尝试过运算符>>,get(),getchar(),但所有这些都读取了整行。
答案 0 :(得分:3)
cin
是缓冲输入。你想要“无缓冲”的输入。除非您直接使用文件,否则它在不同平台上可能会有所不同。
这样的事情可能有所帮助:
http://www.cplusplus.com/forum/beginner/3329/
[EDIT],请记住,使用“buffered”v。“un-buffered”是一个设计决定,两者都是合法的。 cin
上“缓冲输入”的“默认”非常有意义,因为用户将“退格”以纠正输入行,并且您不希望“混乱”为您的程序提供信息。 (而且,一般来说,像文件一样“缓冲输入”可以更有效率。)
答案 1 :(得分:3)
_getche() function做你想要的。
答案 2 :(得分:2)
虽然这是特定于操作系统的,但在类UNIX操作系统中,您可以使用termios接口通过将其置于非规范模式来禁用终端上的输入缓冲:
termios t;
tcgetattr(STDIN_FILENO, &t);
t.c_lflag &= ~ICANON;
tcsetattr(STDIN_FILENO, TCSANOW, &t);
有关详细信息,请参阅termios(3)。