cin输入有多大?

时间:2014-01-01 23:08:08

标签: c++ io cin

考虑以下代码:

int a;
cin >> a;

输入例如12时输入不会停止;它等到你按 ENTER 。这是如何运作的?在您按 ENTER 之前,为什么cin会等待您的输入?

2 个答案:

答案 0 :(得分:4)

您的运行时环境和终端控制原始键盘输入。通常,它们仅逐行将输入发送到应用程序,以允许编辑。如果您希望它立即向您发送键盘输入,您必须以与平台相关的方式与您的终端通话。

(这通常被称为“原始”模式,而不是通常的行缓冲“熟”模式。请注意,熟食模式还处理退格和删除以及光标移动等等。)

答案 1 :(得分:3)

cin后面只有一个缓冲区,用来填充输入,然后在使用提取运算符(>>)时清空。何时以及如何填满取决于平台。例如,在类Unix系统中,输入终端处于规范或非规范模式。在规范模式下,输入逐行可用。在非规范模式下,它立即可用。可以在这些模式之间切换(检查man termios)。

标准输入缓冲区的实际大小是实现定义的。