Скажем, у меня есть массив символов, которые я выделил в куче, и которые я хочу преобразовать в 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 и не могу преобразовать свой код, чтобы использовать только встроенные строковые операции (что и было предложено):
Есть какой-то стандартный способ сделать это, или я должен просто написать свой собственный класс строки (тьфу)? Спасибо!