stringstream nach C-String



  • Hi,

    wie kann ich einen stringstream in einen c-string (char*) konvertieren?



  • .str().c_str()
    

    wenn ich mich nich irre...



  • Hi!

    @k1ro:
    Das ging glaube ich so nicht direkt, hatte das Problem auch mal, da musste man einen Umweg gehen (leider funktioniert die Suchfunktion nicht zum nachsehen). Den Umweg deshalb weil das str nur temporär ist. Es wird so meine ich 0 zurückgegeben.

    So funktioniert es:

    string str = x.str();
    const char* cstr = str.c_str();
    // oder ohne const
    char* cstr = const_cast<char*>(str.c_str());
    

    Code-Hacker



  • Also bei mir funktionierts so eigentlich immer, wie k1ro es beschrieben hat.



  • // Geht, weil alle temporären Objekte erst nach dem Funktionsaufruf gelöscht
    // werden
    std::atoi(stream.str().c_str());
    
    // Geht nicht, weil str() by value zurückgibt und der String nach der ersten
    // Zeile nicht mehr existiert
    const char* c_str = stream.str().c_str();
    std::atoi(c_str);
    
    // Oft die beste Lösung (wenn man nicht alles in eine Zeile quetschen will
    // oder den String mehrfach braucht)
    std::string str = stream.str();
    std::atoi(str.c_str());
    

Anmelden zum Antworten