用户提供的多余数据会发生什么情况
What happens to excess data given by the user?
在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上,数据将被丢弃,并且任何进程仍然写入管道将收到信号。
相关文章:
- 将指针分配给另一个指针时会发生什么情况?
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 在什么情况下,我想在 C/C++ 代码中使用内联汇编代码
- 发生注入类名时会发生什么情况?(C++)
- 在什么情况下,需要共享智能指针而无法使用唯一指针?
- 重新分配向量时,向量中的内存会发生什么情况
- 如果结构中的字符串比使用的 p/调用签名长或短,会发生什么情况?
- 为什么或在什么情况下,你会将参数作为C++中的引用(或指针)传递给函数?
- 如果我向一个12字节的缓冲区写入的字节数少于12,会发生什么情况
- 删除对象(具有不同类型)的引用时会发生什么情况?
- 如果我在 c++ 中以 new 的放置形式使用没有足够的内存,会发生什么情况?
- 使用 Google 基准测试时返回值会发生什么情况?
- 正在连接的等待条件变量的线程会发生什么情况?
- 如果未定义的C++行为符合 C 定义的行为,会发生什么情况?
- 在什么情况下,使用'const T*'输入参数比'const T&'更可取?
- 如果字符串在 C/C++ 中没有 NUL 字符(以防编译器允许它通过)会发生什么情况?
- 通过此方法删除链表中的数据会发生什么情况
- 用户提供的多余数据会发生什么情况
- 在什么情况下,无锁数据结构比基于锁的数据结构更快
- 如果我在使用新的和结束的程序分配数据后没有调用删除运算符,会发生什么情况?