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~


  • Mod

    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 sobald printf bereits aufgerufen wurde.


Anmelden zum Antworten