用户提供的多余数据会发生什么情况

What happens to excess data given by the user?

本文关键字:什么情况 数据 多余 用户      更新时间:2023-10-16

在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;
}

它只要求三个字母,可以让我输入尽可能多的字母。其余的都去哪儿了?最好无处可去...右?

它们进入输入缓冲区。当进程退出(不读取它们)时,缓冲区将被丢弃(以及未读内容

)。

这取决于。 有几个缓冲区在运行。 通常(无保证,但肯定是Unix和Windows的情况),你必须在程序看到任何数据之前按 Enter 键;您键入的所有内容直到并包括回车,然后进入流程中的缓冲区,该缓冲区然后在进程终止时被丢弃。

这是默认行为,假设您的进程已启动从 shell 的命令行,并且连接了该标准输入到键盘。 如果另一个进程已启动您的进程,则可能会已重新配置输入以使其行为不同;很有可能配置键盘(至少在 Unix 下)以发送每个字符输入时,在这种情况下,读取键盘的下一个过程阅读后,它将获得额外的字符。

最后,如果标准输入来自文件,当然,数据中的正如您所期望的那样,文件保留在原处。 如果它来自管道,则在至少在Unix上,数据将被丢弃,并且任何进程仍然写入管道将收到信号。

相关文章: