相关疑难解决方法(0)

从char*初始化std :: string而不复制

我有一种情况,我需要处理大量(许多GB)的数据量:

  1. 通过附加许多较小的(C char*)字符串来构建一个大字符串
  2. 修剪弦乐
  3. 将字符串转换为C++ const std :: string进行处理(只读)
  4. 重复

每次迭代中的数据都是独立的.

我的问题是,我想最小化(如果可能消除)堆分配的内存使用量,因为它目前是我最大的性能问题.

有没有办法将C字符串(char*)转换为stl C++字符串(std :: string),而不需要std :: string来内部分配/复制数据?

或者,我可以使用stringstreams或类似的东西来重用大缓冲区吗?

编辑:感谢您的回答,为清楚起见,我认为修改后的问题将是:

如何有效地构建(通过多个附加)一个stl C++字符串.如果在循环中执行此操作,其中每个循环完全独立,我如何重新使用此分配的空间.

c++ string memory-management stl

43
推荐指数
4
解决办法
2万
查看次数

什么是GCC的"vstring"?

我读了一些GCC bugreport,那里有人在谈论"vstring".搜索WEB我注意到http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/vstring_8h.html.

有人可以详细说明它有用和用于什么?为什么用它代替std :: string?

c++ gcc

22
推荐指数
1
解决办法
7035
查看次数

标签 统计

c++ ×2

gcc ×1

memory-management ×1

stl ×1

string ×1