Comment créer une chaîne std :: directement à partir d'un tableau char * sans copier?

Dire que j'ai un tableau de caractères, que j'ai alloué sur le tas, et que je veux convertir en un std::string. Actuellement, je suis en train de faire les suivants:

char *array = new char[size];
WriteIntoArray(array, size);
std::string mystring(array);
delete[] array;
return mystring; //or whatever

De ce que j'ai lu sur internet (http://www.cplusplus.com/reference/string/string/string/), la chaîne constructeur effectue une copie de la mémoire tampon je le passe, me laissant libre de la mémoire tampon (plus tard, la chaîne libère la mémoire tampon interne). Ce que je voudrais faire est de consacrer mon mémoire tampon, le transfert de contrôle de la chaîne, et puis de libérer mon tampon lorsqu'elle est détruite.

La question l'initialisation de std::string à partir de char* sans copie avait l'air prometteur, mais mon code s'appuie sur les appels d'API ("WriteIntoArray" dans l'exemple ci-dessus) qui ont à écrire dans un tableau de caractères, donc je dois créer un style C char* buffer, et ne peut pas convertir mon code à utiliser uniquement intégré dans les opérations de la chaîne (qui était la réponse suggérée).

Est-il un moyen standard pour ce faire, ou devrais-je écrire ma propre classe string (pouah)? Merci!

source d'informationauteur fyhuang