Lebt string lange genug?
-
Guten Abend!
Folgender Code (dient nur zur Veranschaulichung des Problems)
std::string isRed(bool b) { if(b) return "RED"; else return "NOT RED"; }Ist es jetzt in Ordnung, wenn ich auf diesen zurückgegebenen String
c_str()aufrufe und das einer weiteren Funktion übergebe?printf("Color: %s", isRed(true).c_str());Ist das legal? Kann ich sicher sein, dass der temporäre String lebt bis
printf()beendet ist?~Edit: Code-Tags u. Formatierung~
-
Ja. Eine Temporary lebt bis zum Ende des vollständigen Ausdrucks in dem sie erzeugt wurde. Die
std::string-Temporary wird damit erst zerstört sobaldprintfbereits aufgerufen wurde.