std::string in char*



  • groovemaster schrieb:

    Was meinst du mit "eine Veränderung der Daten nicht zu empfehlen ist"? Du kannst jedes String Objekt ganz normal per op [] ändern.

    Er meinte höchstwahrscheinlich die Änderung der Daten in (char*)&str[0] oder const_cast<char*>(str.data()), also das worum es in diesem Thread die meiste Zeit ging 😉



  • Wenn es um das const wegcasten ging, dann würde aber das "nicht zu empfehlen" nicht passen. 😉 Denn dann wäre es schlichtweg falsch.



  • camper schrieb:

    array new und auto_ptr? keine gute idee.

    Izz, stimmt. Dann halt mit normalem Zeiger:

    template <typename CharT>
    CharT* string_to_array (const std::basic_string<CharT>& str)
    {
        CharT* cstr = new char[str.size () + 1];
        std::copy (str.begin (), str.end (), cstr);
        cstr[str.size ()] = 0;
        return cstr;
    }
    

    Ich wollte dem Anwender Arbeit abnehmen.
    BTW, beim Test hatts wohl nur deshalb nicht gekracht, weil die Benutzung so aussah:

    std::cout << string_to_array (std::string ("asdf")).release () << std::endl;
    

    😃


Anmelden zum Antworten