Strings in C-Strings umwandeln
-
1. Wie kann ich Stringdaten in Charfelder umwandeln, wobei die Anzahl der benötigten C-Strings
zum Zeitpunkt des Programmlaufs nicht bekannt ist, da die Anzahl der Strings sich erst im Laufe
des Programms ergibt.2. Die Strings sollen auf einen bestimmten C-String geschoben werden, der immer wieder neu
belegt wird. So gesehen wird eigentlich nur ein Charfeld benötigt.Lösung soll möglichst compilerunabhängig sein.
Heinrich
-
Komm zwar nicht ganz mit, aber so kriegt man ein Char-Array aus nem std::string
std::string str("Hallo Welt"); char cstr[] = str.c_str();
-
GPC schrieb:
char cstr[] = str.c_str();nee, klappt nicht ganz.
-
Eh, was hab ich vergessen?
EDIT: Idee:
std::string str("Hallo Welt"); char *cstr = new char[str.size()]; strcpy(cstr, str.c_str()); //Echte Männer lieben das Risiko ;) //..mit cstr arbeiten delete [] cstr;
-
Wenn deine Standardlib strdup kennt, dann kannst es einfach so machen: char* p = strdup( myString.c_str() );
ansonsten musst halt selbst Speicher anfordern und kopieren.
-
User--- schrieb:
Wenn deine Standardlib strdup kennt, dann kannst es einfach so machen: char* p = strdup( myString.c_str() );
ansonsten musst halt selbst Speicher anfordern und kopieren.Machst du doch hier auch. Strdup fordert Speicher an, und wehe du free()st ihn nicht!
Bye, TGGC (Demo or Die)
-
char *cstr = new char[str.size()];// +1 fehlt für die abschließende 0 strcpy(cstr, str.c_str()); //Echte Männer lieben das Risiko ;) //..mit cstr arbeiten delete [] cstr;
-
echte männer nehmen std::vector.
-
Klar! Aber wofür?
Bye, TGGC (Demo or Die)
-
damit man nicht das delete[] vergisst.
-
Optimizer↓ schrieb:
echte männer nehmen std::vector.
Falsch - echte Männer rechnen direkt auf str.c_str() (oder nutzen gleich die string-eigenen Methoden).