Скажем, у меня есть массив символов, который я выделил в куче, и который я хочу преобразовать в 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/), конструктор строк выполняет копию буфера, который я передаю, оставляя меня освободить буфер (позже строка освобождает свой внутренний буфер). То, что я хотел бы сделать, это выделить мой буфер, передать его в строку, а затем освободить свой буфер, когда он будет разрушен.
Вопрос инициализация std::string из char * без копирования выглядел многообещающим, но мой код основан на вызовах API ( "WriteIntoArray" в приведенном выше примере), который приходится записывать в массив символов, поэтому мне нужно создать буфер char * C-style и не может преобразовать мой код, чтобы использовать только встроенные строковые операции (что было предложено).
Есть ли какой-то стандартный способ сделать это, или я должен просто написать свой собственный класс строк (ugh)? Спасибо!