为啥使用 getline 从标准输入获取大量输入会截断我的输入?

Posted

技术标签:

【中文标题】为啥使用 getline 从标准输入获取大量输入会截断我的输入?【英文标题】:Why does taking large input from stdin using getline truncate my input?为什么使用 getline 从标准输入获取大量输入会截断我的输入? 【发布时间】:2020-01-21 11:29:41 【问题描述】:

我一直在尝试从 cpp 中的标准输入中获取输入。

我的输入包含 1000 个数字(每个数字的最大大小

这是我的终端的屏幕截图:

我从getline() 获取输入并存储在字符串缓冲区中。

为什么我的命令提示符会截断我的输入?

【问题讨论】:

你用什么操作系统和终端? 加一个minimal reproducilble example,也推荐阅读How do I ask a good question?。 @anastaciu 您是否希望 OP 发布最多 10 位数字的 1000 个号码? @ThomasSablik 不,他们可能希望 OP 包含重现问题所需的详细信息,即重现问题的终端、环境和示例数据。您不必粘贴“1000 个数字,最多 10 位数字”。您可以只指定“粘贴 1000 个最多 10 位数字时会出现问题”。 可能不相关,但我不明白您为什么需要向标准输入插入那么多数据。你能不能只从文件中读取并避免这个问题? 【参考方案1】:

从屏幕截图看来,您使用的是 Windows 命令提示符。这些有一个line limit of 8191:

在命令提示符中,您在命令提示符处使用的以下命令行的总长度不能超过 2047 或 8191 个字符(取决于您的操作系统):

如果您需要输入超过该限制的大量数字列表,从文件中读取它们可能会更好。

【讨论】:

如果这回答了您的问题,您可以使用勾选来接受它 - 尽管建议等待一段时间,看看您是否得到其他更好的答案

以上是关于为啥使用 getline 从标准输入获取大量输入会截断我的输入?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 std::getline() 在格式化提取后跳过输入?

为啥 std::getline() 在格式化提取后跳过输入?

为啥 std::getline() 在格式化提取后跳过输入?

为啥 std::getline() 在格式化提取后跳过输入?

为啥从标准输入读取用户输入时我的字符串不匹配?

c ++ 11 getline询问两次输入