在C ++中,如果给出了多余的输入会发生什么?它是存储在某处还是完全被忽略了?
例如,此示例代码:
#include <iostream>
using namespace std;
int main()
{
char a, b, c;
cout << "Enter three letters: ";
cin.get(a).get(b).get(c);
cout << "a: " << a << "\nb: " << b << "\nc: " << c << endl;
return 0;
}
只要求三个字母,就让我输入我想要的数量。所有其他的去哪儿了?无处不在......对吗?
答案 0 :(得分:3)
他们进入输入缓冲区。当您的进程退出(不读取它们)时,缓冲区将被丢弃(以及未读取的内容)。
答案 1 :(得分:2)
这取决于。有几个缓冲区在起作用。 通常(没有 保证,但肯定是Unix和Windows的情况),你必须 在程序看到任何数据之前按Enter键;你打字的一切 直到并包括进入然后进入你的过程中的缓冲区,这 然后在进程终止时丢弃。
这是默认行为,假设您的进程已启动 从shell的命令行,并连接该标准输入 到键盘。如果另一个流程已启动您的流程,则可能 重新配置输入以表现不同;这很有可能 配置键盘(至少在Unix下)发送每个字符 因为它输入了,在这种情况下,下一个读取键盘的过程 在你阅读之后,它将获得额外的角色。
最后,如果标准输入来自一个文件,当然还有数据 正如你所期望的那样,文件保持原样。如果它来自管道,在 至少在Unix上,数据将被丢弃,任何进程仍然存在 写入管道将收到信号。