(STL)String Array in ein Char Array aus Zeichenketten konvertieren.
-
Hi,
hat da jemand schonmal gemacht bzw. gibts vllt. ein Snippet dazu, ich beiß
mir schon seit Stunden die Zähne erfolglos aus
!Danke für eure Hilfe
ShadowEater
-
Hmm wo ist das Problem? Also jetzt so richtig schön gefrickelt:
std::vector<std::string> data; const std::size_t size(data.size()); char** arr_ptr_data(new char*[size]); for (std::size_t i(0); i < size; ++i) { arr_ptr_data[i] = new char[data[i].length()]; std::strcpy(arr_ptr_data[i], data[i].c_str()); }
Und schon fertig 
-
Oh Mann,
danke ist viel komplizierter als ich dachte !
ShadowEater
-
Selber schuld wenn man Array benutzen will.
-
Ich WILL nicht, ich MUSS weil man bei der Dll Erstellung auf String verzichten sollte, das ganze in VB funzen soll und das Pendant zu den VB Strings Char* ist !
Gruß
Shadoweater
-
wenn die strings (die char-zeiger) nicht verändert werden, dann bist du mit c_str() gut bedient, andernfalls mit vector<char>.
string x; x.c_str(); //liefert dir einen const char * zurück. //modifizierbar: vector<char> vec(x.begin(), x.end()); &vec[0]; //liefert dir einen char * zurück, dessen inhalt du ändern kannst //alternativ: &*vec.begin()allerdings musst du bei dem vector auch aufpassen (aber das auch sowieso), dass die zeichenkette nicht zu weit beschrieben wird (über vec.size() hinaus, auch wenn es unter capacity() ist)
schließlich kommt es auch darauf an, wer für die speicherverwaltung zuständig sein soll - du und dein programm (dann ist das mit vector<char> kein problem) oder soll die andere seite dann selbst die daten löschen?
-
ShadowEater schrieb:
Ich WILL nicht, ich MUSS weil man bei der Dll Erstellung auf String verzichten sollte, das ganze in VB funzen soll und das Pendant zu den VB Strings Char* ist !
Gruß
ShadoweaterEin std::string hat die Methode c_str() die dir einen C-Style-String const char* zurück gibt. Zeig doch mal die Signatur der Funktion, der du den String übergeben mußt.
-
Danke für die schnelle Antwort,
wenn die strings (die char-zeiger) nicht verändert werden...
werden sie nicht mehr, es handelt sich um ein Array das fertig als string Array vorliegt und zurückgegeben werden soll !
Danke nochmal,
ShadowEater