4

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

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

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

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

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

4

0 回答 0