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()
gibt einen Zeiger auf die gespeicherten Daten zurück. Tatsächlich ist std::string("text")
nur für die Zeit verfügbar, die ich benutze (z. B. wenn ich eine andere Instanz initialisiere), so dass am Ende der Destruktor aufgerufen wird, der die Daten löscht, die s auf nichts zeigen.Ist es möglich, ein const char * mit einem rvalue wie string.c_str() zu initialisieren?
Jetzt ist meine Frage, wenn es eine Möglichkeit gibt, die Daten irgendwo zu verschieben, wo sie nicht vom Destruktor gelöscht werden, so kann const char*
darauf zeigen. Oder ist es nur möglich, wenn sie etwas wie einen Shared-Smart-Pointer verwenden würden, der weiß, ob etwas anderes auf die std::string
Daten zeigt, so dass es noch nicht gelöscht ist.
Kopieren Sie die Daten irgendwo und darauf zeigen, ist nicht das, was ich suche.