std::string 在 std::cin 的 4095 个字符后被截断

2024-03-22

我的程序需要从 stdin 读取最多 50k 个字符长的字符串。代码如下:

#include <iostream>
#include <string>

std::string A;

int main(){
    std::cin >> A;
    std::cout << "String max: " << A.max_size() << std::endl;
    std::cout << "Size: " << A.size();

当我尝试输入 10k 字符长的字符串时,我得到以下输出:

String max: 4611686018427387903
Size: 4095

据谷歌称std::cin and std::string处理 10k 个字符应该没有问题,但由于某种原因A在 4095 个字符后被截断。我通过将字符串粘贴到默认的 Ubuntu 终端来输入该字符串。将它粘贴到同一终端中的 Python3 中效果很好,这让我相信不是终端截断了它,而是 C++。我编译了g++ program.cxx我有 16 GB 内存。

如何从标准输入输入大字符串?任何帮助表示赞赏。

P.S.:如果你需要一个大字符串,只需将其粘贴到 Python 中:print("123"*5000)


在规范模式下,您可能会遇到 Linux 终端的 4096 行限制输入。如果您尝试在 Linux 终端中输入很长的行(>4095 个字符),则多余的行将被丢弃,直到您输入换行符或 eof 字符来刷新终端缓冲区。

有几种方法可以解决这个问题:

  • 在输入中每隔一段时间插入一个 eof/flush 字符(通常是 ctrl-D)——每个这样的字符都会刷新终端缓冲区,重置 4K 限制,并允许输入更长的行。注意不要在换行符或另一个 eof 之后立即插入一个,因为这会导致输入出现 EOF
  • 将终端置于非规范模式。这将导致缓冲区在进程读取时被刷新;大多数进程的读取速度通常比在终端中键入或粘贴字符的速度快得多,因此您永远不会接近 4K 限制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

std::string 在 std::cin 的 4095 个字符后被截断 的相关文章

随机推荐

  • Rails:嵌套资源冲突,如何根据调用的路由确定索引操作的范围

    假设您有两条定义的路线 map resources articles map resources categories has many gt articles 两者都可以通过助手 路径访问 articles path articles c
  • 切换列表字典中的键和值

    大家好 Stackoverflow 我有一个嵌套字典 其中列表作为值 我想创建一个字典 其中所有列表条目都将其相应的键作为值 举例时间 what I have dict1 A 1 2 3 B 4 5 6 C 7 8 9 what I wan
  • 检测请求是否是 ESI - Symfony2

    这可能是不可能的 如果是这种情况 那么我将不得不寻找其他解决方案 所以如果无法完成 请告诉我 我知道我可以获得请求类型 即 1 主请求或 2 子请求 但是有没有办法检测该请求是否是 ESI 请求 我的理解是ESI永远是一个子请求 但是有很多
  • “无法加载配置中指定的 X.509 证书身份”

    我将工作中的 WCF 服务从我的开发环境转移到 QA 环境 包括证书 根授权 根身份验证撤销列表 服务证书 包括其 PK 之后 我使用 FindPrivateKey 找到了私钥 并授予所有相关帐户在文件系统级别访问私钥文件的完全权限 我的应
  • 使用 jq 解析嵌套 json

    我正在解析嵌套的 json 以从 json 响应中获取特定值 json响应如下 custom classes 2 images classifiers classes class football score 0 867376 classi
  • 错误:无法为具有多个返回值的查询创建 TypedQuery

    我尝试用java和jpa来实现searchBook功能 我有两门课 即媒体课和图书课 书籍延伸了媒体 我将数据保存在不同的表中 我尝试从下面的查询中选择数据 TypedQuery
  • 如何分析 AngularJS 组件的性能基准?

    作为一项要求 我必须根据模拟数据分析几个 AngularJS 组件 例如 ng grid IE8 Chrome 和 FF 中的数据表 的性能基准 我有模拟数据 现在 当使用 IE8 Profiler 时 我得到了几个函数的时间 毫秒 根据
  • 使用 GHC 泛型定义类似“mempty”的函数?

    我正在为 Zoho REST API 编写一个客户端库 并且有一堆不同的记录类型 其中包含所有内容Maybe a字段 即 data Approval Approval apDelegate Maybe Bool apApprove Mayb
  • 在 IE 请求中设置 AJAX 内容类型标头

    从 Internet Explorer 发送跨域 jquery ajax http 请求时 是否可以将 http 内容类型请求标头设置为 application json 我们正在尝试使用 REST WCF 服务 该服务在格式化响应时解释请
  • 是否可以将 MPMoviePlayerController 静音?

    在我的 iPhone 应用程序中 我想要静音和取消静音 MPMoviePlayerController 我进行了很多搜索 但无法成功 是否可以在 MPMoviePlayer 控制器中将音频静音 请帮帮我 提前致谢 MPMusicPlayer
  • 如何使用 TYPO3 extbase Fluid 正确输出 DateTime

    我在数据库中存储了两个 dateTime 对象 2014 11 03 09 00 00 2014 10 21 13 45 00 当我尝试使用 ViewHelper format date 输出它们时
  • 无服务器 - 如何将多个文件添加到 iamRoleStatements?

    In my serverless yml文件 我希望能够添加iamRoleStatements来自两个不同的文件 这不能改变 所以我尝试这样做 provider iamRoleStatements file environments yml
  • 在 Django 中注释 SUM 聚合函数导致“None”值

    正在做我的第一个真正的 Django 项目 需要指导 背景 我的项目是一个 reddit 克隆 用户提交链接 文本 访客投赞成票或反对票 有一个社交排名算法 作为后台脚本每约 2 分钟运行一次 根据净投票和内容的新鲜度对所有提交的内容重新排
  • 在列表上循环并删除[重复]

    这个问题在这里已经有答案了 for String fruit list if banane equals fruit list remove fruit System out println fruit 这里是一个带有删除指令的循环 在执行
  • FullCalendar 和 django

    我想在我的 django 项目中使用 fullcalendar jquery 插件 我有一个入门型号 class Entry models Model date models DatetimeField 它只有一个日期属性 我知道 full
  • 在另一台计算机上运行我的 Asp.Net Web 应用程序

    我如何在另一台计算机上运行我的应用程序 我的团队成员想要在他的计算机上查看网页 他不想安装 Visual Studio 只是想在浏览器中查看网页 我使用的是 Macbook 将其发布到 Web 服务器 或者让他在自己的计算机上安装 IIS
  • Apple MDM 推送错误,但仅限于某些 iOS 设备

    我们在某些 iPhone 设备上使用 MDMpush 时遇到错误 7 月 30 日 17 52 46 Mirnas iPhone apsd 49 发生流错误 错误 Domain NSPOSIXErrorDomain Code 54 操作无法
  • 检查 PHP 中的字符串是否序列化

    我正在为我的应用程序构建 Redis DB 缓存层 并且已经到了要处理数组的地步 我想知道是否有任何好的 高性能 方法来控制 PHP 中的字符串是否被序列化 多谢 array unserialize string if array fals
  • 如何解决因APK文件无效而安装失败的问题?

    我正在尝试构建 Dolphin Player 但我收到了错误 2012 09 21 09 46 23 DolphinPlayer Installation failed due to invalid APK file 2012 09 21
  • std::string 在 std::cin 的 4095 个字符后被截断

    我的程序需要从 stdin 读取最多 50k 个字符长的字符串 代码如下 include