| Autor |
Nachricht |
Lordrin
Mitglied
Benutzerprofil
Anmeldungsdatum: 07.12.2001
Beiträge: 72
|
Lordrin Mitglied
11:52:00 18.01.2002 Titel: |
Casten - CString zu char* |
Zitieren |
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! |
_________________ Einfach ist schön aber schwer.
Zuletzt bearbeitet von estartu am 10:34:40 16.01.2006, insgesamt 1-mal bearbeitet |
|
 |
Werbeunterbrechung
|
|
 |
elise
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.05.2001
Beiträge: 8074
|
elise Mitglied
12:04:00 18.01.2002 Titel: |
|
Zitieren |
hi
hatte ich mir mal notiert:
strcpy((char*)myUnsignedChar, myCString);
[img]images/smiles/icon_smile.gif[/img]
[ Dieser Beitrag wurde am 18.01.2002 um 13:29 Uhr von elise editiert. ] |
_________________ There's An App For That
OSL♥
|
|
 |
Lordrin
Mitglied
Benutzerprofil
Anmeldungsdatum: 07.12.2001
Beiträge: 72
|
Lordrin Mitglied
12:54:00 18.01.2002 Titel: |
|
Zitieren |
Besten Dank endlich weiß ich es !! [img]images/smiles/icon_smile.gif[/img] |
_________________ Einfach ist schön aber schwer.
|
|
 |
Marc++us
Administrator
Benutzerprofil
Anmeldungsdatum: 05.04.2000
Beiträge: 16966
|
Marc++us Administrator
13:02:00 18.01.2002 Titel: |
|
Zitieren |
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:
| C/C++ Code: | CString str = "Hallo Welt";
printf("%s %s\n", (LPCTSTR)str, str.GetBuffer(255)); | |
| C/C++ Code: | CString str = "Hallo Welt";
printf("%s %s\n", (LPCTSTR)str, str.GetBuffer(255)); | |
| C/C++ Code: | 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. |
_________________ Viele Grüße
Marc++us
C++.de
|
|
 |
elise
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.05.2001
Beiträge: 8074
|
elise Mitglied
13:30:00 18.01.2002 Titel: |
|
Zitieren |
|
 |
dEUs
Moderator
Benutzerprofil
Anmeldungsdatum: 16.05.2001
Beiträge: 11761
|
dEUs Moderator
14:13:00 18.01.2002 Titel: |
|
Zitieren |
auch von mir [img]images/smiles/icon_smile.gif[/img] |
_________________ Gruß,
dEUs
-Mod im MFC & C#-Forum-
|
|
 |
Lordrin
Mitglied
Benutzerprofil
Anmeldungsdatum: 07.12.2001
Beiträge: 72
|
Lordrin Mitglied
16:37:00 18.01.2002 Titel: |
|
Zitieren |
Und von mir erst !! [img]images/smiles/icon_biggrin.gif[/img] |
_________________ Einfach ist schön aber schwer.
|
|
 |
Unix-Tom
Moderator
Benutzerprofil
Anmeldungsdatum: 18.07.2000
Beiträge: 10376
|
Unix-Tom Moderator
23:48:00 18.01.2002 Titel: |
|
Zitieren |
Ok. OK Dann in die FAQ-MFC damit. |
_________________ Moderator für MFC, Linux und Datenbanken
|
|
 |