有没有办法将堆中现有char *的所有权传递给std :: string?

时间:2011-04-26 17:16:53

标签: c++ c string memory-management standard-library

  

可能重复:
  initializing std::string from char* without copy

我真的想弄清楚如何将堆分配的char *的“所有权”传递给std :: string实例,而不需要任何额外的malloc或memcpy。有人知道如何以这种方式构建字符串。理想情况下它会是这样的:

const char* buffer = someCMethodThatReturnsAString();
try {
  string strBuffer(PlacementAllocator(buffer)); 
} catch (...) {
   free(buffer);
}

但没有实际复制缓冲区。相反,我希望缓冲区成为字符串的属性,并在删除字符串对象时(即超出范围)为free()。​​

这是标准库中的分配器可以支持的东西,还是我自己需要构建分配器?

0 个答案:

没有答案