假设我有一个字符数组,我已在堆上分配,并且我想将其转换为std :: string.目前我正在做以下事情:
char *array = new char[size];
WriteIntoArray(array, size);
std::string mystring(array);
delete[] array;
return mystring; // or whatever
Run Code Online (Sandbox Code Playgroud)
从我在互联网上读到的内容(http://www.cplusplus.com/reference/string/string/string/),字符串构造函数执行我传递它的缓冲区的副本,让我释放缓冲区(稍后,该字符串释放其内部缓冲区).我想要做的是分配我的缓冲区,将它的控制转移到字符串,然后在它被破坏时让它释放我的缓冲区.
这个问题从字符*初始化的std :: string没有副本看起来前途无量,但我的代码依赖于(在上面的例子中"WriteIntoArray")API调用它必须写入字符数组,所以我必须创建一个C风格char*buffer,并且不能将我的代码转换为仅使用内置字符串操作(这是建议的答案).
有没有一些标准的方法来做到这一点,或者我应该写我自己的字符串类(呃)?谢谢!