【发布时间】:2011-10-05 17:47:36
【问题描述】:
假设我有一个字符数组,我在堆上分配了它,我想将它转换成一个 std::string。目前我正在做以下事情:
char *array = new char[size];
WriteIntoArray(array, size);
std::string mystring(array);
delete[] array;
return mystring; // or whatever
根据我在互联网上阅读的内容 (http://www.cplusplus.com/reference/string/string/string/),字符串构造函数执行了我传递给它的缓冲区的副本,让我释放缓冲区(稍后,字符串释放其内部缓冲区)。我想做的是分配我的缓冲区,将它的控制权转移给字符串,然后让它在我的缓冲区被破坏时释放它。
initializing std::string from char* without copy 的问题看起来很有希望,但是我的代码依赖于 API 调用(上例中的“WriteIntoArray”),这些调用必须写入一个字符数组,所以我必须创建一个 C 风格的 char* 缓冲区,并且无法将我的代码转换为仅使用内置字符串操作(这是建议的答案)。
是否有一些标准的方法来做到这一点,或者我应该只写自己的字符串类(呃)?谢谢!
【问题讨论】: