string zu char *
-
Moin
Ich habe folgende Funktion geschrieben:
void mache_irgendwas(char *anweisung) { // wurschtel herum }nun würde ich gerne die variable "anweisung" mit
dem Inhalt eines strings füllen, da aber "anweisung" ein C String ist
muss ich den string vorher umwandeln.string string1; string1="blabla";warum geht jetzt folegnde Zeile nicht?
mache_irgendwas(string1.c_str());Theoretiusch müsste sie doch gehen, oder?
mfg Tupi
-
c_str() == const char*
-
Hallo,
Wenn deine Funktion 'mach_irgendwas()' 'anweisung' nicht verändert, kannst du auch folgendes schreiben:mach_irgendwas(const_cast<char*>(my_string.c_str()));Ansonsten bleibt wohl nur etwas a la
char tmp[100]; strcpy(tmp, my_string.c_str()); // my_string sollte hier aber nicht mehr als 99 Zeichen besitzen (+ '\0'). mach_irgendwas(tmp);Caipi
-
Caipi schrieb:
Hallo,
Wenn deine Funktion 'mach_irgendwas()' 'anweisung' nicht verändert, kannst du auch folgendes schreiben:mach_irgendwas(const_cast<char*>(my_string.c_str()));Das wollen wir mal schön sein lassen. Wenn die Funktion den string nicht verändert dann soll die Funktion gefälligst char const * annehmen und nicht char*, denn bei char* erwartet man das sie den string verändert.
Daher bleibt nur noch die 2. Variante über eine string Kopie.
BR
-
evilissimo schrieb:
Caipi schrieb:
Hallo,
Wenn deine Funktion 'mach_irgendwas()' 'anweisung' nicht verändert, kannst du auch folgendes schreiben:mach_irgendwas(const_cast<char*>(my_string.c_str()));Das wollen wir mal schön sein lassen. Wenn die Funktion den string nicht verändert dann soll die Funktion gefälligst char const * annehmen und nicht char*, denn bei char* erwartet man das sie den string verändert.
Daher bleibt nur noch die 2. Variante über eine string Kopie.
BR
Habe diesen 'Hack' mit dem const_cast<> nur erwähnt, da es IIRC tlw. Compiler gab, die eine Standardlib mit Funktionen a la strlen() hatten, bei denen strlen() einen char* erwartete obwohl diese Funktion den Parameter nicht veränderte...
Aber in diesem Fall ist es ja eine selbstgeschriebene Funktion die aufgrund des fehlenden const's höchstwahrscheinlich das Argument ändern soll. Von daher geb ich dir Recht

Caipi