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