const char* s = std::string("text").c_str();
std::cout << s << std::endl; //This will print nothing because the data
//isn't available any longer
std::string::c_str()
は、格納されたデータへのポインタを返します。 実際にstd::string("text")
は使用している間だけ使用できます(たとえば、他のインスタンスを初期化するときに使用します)。最後にデストラクタが呼び出され、のが何も指さないデータが削除されます。string.c_str()のようなrvalueでconst char *を初期化することはできますか?
私の質問は、デストラクタによって削除されていないどこかでデータを移動する方法がある場合です。const char*
がそれを指すことができます。あるいは、他の何かがstd::string
のデータを指しているので、それがまだ削除されていないことを知っている共有スマートポインタのようなものを使うのであれば、それは可能です。
どこかにデータをコピーして、それを指しているのは私が探しているものではありません。