string zu char* konvertieren
-
Hallo,
wie die Überschrift sagt, weiß ich nicht, wie ich aus einem string ein char-Array mache...
mfG,
Matthias
-
Wenn dir ein const char* reicht, kannst du dafür die Methode string::c_str() verwenden. Wenn es echt ein veränderbarer char* sein MUSS, könntest du mit &s[0] die Adresse des ersten Zeichens herausbekommen.
-
Einen veränderbaren char* auf einen std::string solltest Du nie verwenden und ist aus guten Grund nur schwierig zu bekommen. Man kann mit const_cast hantieren, aber das sollte man tunlichst vermeiden. std::string ist in der Regel referenzgezählt, d.h. der Speicherbereich, auf den der Pointer, den ich mit std::string::c_str() oder std::string::data() bekomme, zeigt auf einen Speicher, der möglicherweise von anderen Instanzen von std::string auch verwendet wird.
Versuch doch mal:
std::string s1 = "uhu"; std::string s2 = s1; std::cout << s1.data() << ' ' << s2.data() << std::endl;Wahrscheinlich bekommst Du 2 mal den gleichen Wert. Wahrscheinlich daher, weil es nicht im Standard spezifiziert ist, sondern Implementierungsabhängig.
Anders verhält es sich mit vector. Benötigt man einen char* (ohne const) kann man ein std::vector<char> verwenden und einen Zeiger auf das 1. Zeichen holen:
std::vector<char> v(64); char* buffer = &v[0]; // das ist erlaubtLeider gibt es (noch) kein std::vector<T>::data(), daher die etwas unschöne Syntax.
Tommi
-
string blub(...); char* array = new char[blub.size() + 1]; copy(blub.begin(), blub.end(), array);