Casten - CString zu char*
-
Mal wieder eine Frage
Ich versuche schon sei geraumer Zeit immer wieder eine Variable vom Typ CString in den Typ char* zu überführen. Bis jetzt konnte ich mich immer wieder darum herummogeln, aber komme ich nicht mehr drum rum.
Also könnte mir bitte kurz jemand posten wie das funktioniert?Danke!
-
hi
hatte ich mir mal notiert:strcpy((char*)myUnsignedChar, myCString);
[ Dieser Beitrag wurde am 18.01.2002 um 13:29 Uhr von elise editiert. ]
-
Besten Dank endlich weiß ich es !! images/smiles/icon_smile.gif
-
Das gefällt mir gar nicht.
Zunächst ist die Kopie nicht direkt notwendig, zum anderen ist diese Konversion für das strcpy reichlich schmutzig: sie nutzt nämlich aus, daß der Zeiger auf den internen Stringbuffer gleich zu Beginn der Klasse CString gespeichert ist, und daher ein Cast der Adresse des CString-Objekts auch nebenbei die Adresse des Strings liefert. Implementationsdetails sollte man nie ausnutzen, wer weiß ob sich das mal aus irgendwelchen Gründen ändert.
CString besitzt zwei geeignete Member, entweder nimmt man GetBuffer oder den Cast-Operator LPCTSTR:
CString str = "Hallo Welt"; printf("%s %s\n", (LPCTSTR)str, str.GetBuffer(255));
GetBuffer nimmt als Parameter die Mindestanzahl der Zeichen, die zurück geliefert werden sollen.
GetBuffer gibt einen Zeiger auf LPSTR zurück, man kann also danach auch schreiben auf den Buffer zugreifen. LPCTSTR liefert einen konstanten String, den man nur lesen kann.
-
@marcu++s
-
auch von mir images/smiles/icon_smile.gif
-
Und von mir erst !! images/smiles/icon_biggrin.gif
-
Ok. OK Dann in die FAQ-MFC damit.