【发布时间】:2010-09-26 13:34:18
【问题描述】:
我有一种情况,我需要处理大量(许多 GB)的数据:
- 通过附加许多较小的 (C char*) 字符串来构建一个大字符串
- 修剪字符串
- 将字符串转换为 C++ const std::string 进行处理(只读)
- 重复
每次迭代的数据都是独立的。
我的问题是,我想尽量减少(如果可能的话消除)堆分配的内存使用量,因为它目前是我最大的性能问题。
有没有一种方法可以将 C 字符串 (char*) 转换为 stl C++ 字符串 (std::string) 而无需 std::string 在内部分配/复制数据?
或者,我可以使用字符串流或类似的东西来重新使用大缓冲区吗?
编辑:感谢您的回答,为了清楚起见,我认为修改后的问题是:
如何有效地构建(通过多个附加)stl C++ 字符串。如果在一个循环中执行这个动作,每个循环都是完全独立的,我怎样才能重新使用这个分配的空间。
【问题讨论】:
标签: c++ string memory-management stl