c++ - C++中如何处理长字符串?

标签 c++ string performance

我的环境是C++03。我需要修改大约 10000 到 100000 个字符的文件(尽管也可以有更大或更小的文件)。修改包括替换子字符串以及插入和删除行。

  • 实现方式一:加载文件到一个大std::string ,对其进行修改并将其写回文件中。但是,在字符串中间插入并没有很好的性能,对吧?
  • 实现方法 2:将字符串拆分为 vector<string>list<string>较小的 block (一个 block 可能是一行或几行),对每个 block 进行操作,最后将整个 block 放在一起。我想知道这是否有很大的开销......

所以问题是,哪种方法最好?如有任何意见,我将不胜感激。谢谢!

最佳答案

“100000 个字符”对我来说并不像一个大文件(顺便说一句,100 KB)。但话又说回来,我在文本处理方面没有真正的经验。所以我的建议是:测试两者,分析它们,如果两种实现产生相似的结果,不要感到惊讶。

However, inserting in the middle of a string does not have good performance, right?

没有必要。由于当今系统的设计方式,缓存局部性可以使在字符串/vector 中间的插入和删除速度惊人地快。同样,了解您的具体情况的唯一方法是个人资料

关于c++ - C++中如何处理长字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42899777/

相关文章:

ruby-on-rails - 是否可以使用 rake 在 Rails 中模拟页面请求?

performance - Hibernate 按 id 删除对象

MySQL 性能 : Ordering by content of joined tables

c++ - QT中如何制作带触发器的图片按钮

javascript - 为什么JS中的字符串替换不能替换所有字符

ruby - 使用正则表达式将 12 小时制转换为 24 小时制

python - str.__getslice__ 没有按预期工作,负停止

c# - C# 中的 CLOCKS_PER_SEC 等价物

c++ - 标签分发中的转发参数

c++ - navicat之类的数据库管理软件如何从表中选取大量数据