我有一个情况需要处理大量(几 GB)的数据,具体如下:
- 通过添加许多较小的(C char*)字符串来构建一个大字符串
- 修剪该字符串
- 将该字符串转换为 C++ const std::string 以进行处理(只读)
- 重复执行此过程
每次迭代中的数据是独立的。
我的问题是,我想尽量减少(如果可能的话消除)堆内存的使用,因为目前这是我最大的性能问题。
是否有一种方法可以将 C 字符串(char*)转换为 stl C++ 字符串(std::string),而无需要求 std::string 在内部分配/复制数据?
或者,我可以使用 stringstream 或类似的东西来重用一个大缓冲区吗?
编辑:感谢答案,为了更清晰,我认为修改后的问题应该是:
如何高效地构建(通过多次追加)stl C++字符串。如果在循环中执行此操作,其中每个循环都是完全独立的,则如何重复使用已分配的空间。
char*
+ size 的库函数。 - SasQ