Wie string nach 'const char*' umwandeln?
-
Ich habe in meiner main() eine Variable vom Typ string,
int main() { string hostname; . . return 0; }welche ich per Referenz an eine Funktion uebergebe und ihr dort einen entsprechenden Wert zuweise.
Leider aber brauche ich nun zur Weitergabe an eine Funktion aus der MySQL API den gleichen Wert, allerdings dort vom Typ 'const char*.
Wie wandle ich diese Variable am elegantesten um? Im Augenblick habe ich es so geloest, habe aber starke Zweifel, ob das denn so die eleganteste Loesung ist:
string hostname; . . char HOST[30] = { "" }; hostname.copy( HOST, 24 );Auch wenn's damit immerhin schon mal funktioniert ...

Gruss
Guenther
Edit: Sorry, ich hatte urspruenglich nur 'char' geschrieben, aber es sollte bzw. musste natuerlich 'const char*' heissen ...
-
wenn du den wert nicht aenderst kannst du
std::string::c_str verwenden
-
Erstens: Bist du sicher, daß die API einen 'char' (ein einzelnes Zeichen) benötigt? Oder nicht doch eher einen 'char*'/'const char*' (Zeiger auf ein Zeichen(array) = C-String)?
Zweitens: Wenn du einen 'const char*' benötigst, nimm doch einfach
hostname.c_str(), wenn sie wirklich einen nicht-konstanten 'char*' braucht, ist copy() der sicherste Weg (manchmal reicht auch const_cast<> aus, aber da solltest du sicher sein, daß das 'const' nur aus Versehen/Unwissenheit vergessen wurde).
-
CStoll schrieb:
Erstens: Bist du sicher, daß die API einen 'char' (ein einzelnes Zeichen) benötigt? Oder nicht doch eher einen 'char*'/'const char*' (Zeiger auf ein Zeichen(array) = C-String)?
Sorry, mein Fehler. Es muss natuerlich 'const char*' heissen, werd's gleich oben mal aendern.
Zweitens: Wenn du einen 'const char*' benötigst, nimm doch einfach hostname.c_str()
Mist, davon hattest Du mir schon mal erzaehlt, hatte ich aber leider inzwischen wieder vergessen und seinerzeit auch vergessen den Hinweis in meine persoenliche FAQ aufzunehmen.
Schande ueber mein Haupt ...

Aber ok, dann kann's ja weitergehen mit dem C++ lernen ...

-
Ok, habe das mit dem 'hostname.c_str()' umgesetzt und es klappt - wie nicht anders zu erwarten - hervorragend.
Dafuer wieder mal ein grosses D A N K E S C H O E N an Carsten und natuerlich auch an Mr Evil ...

Guenther