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;