Konvertierung von BSTR in LPCTSTR ?

clarin

Grünschnabel
Hallo zusammen,

ich hab da eine Funktion die mir einen String vom Typ BSTR zurückgibt und will diesen in einer anderen Funktion als Parameter benutzen, allerdings wird hier ein LPCTSTR erwartet.

Wie muss ich vorgehen um ein BSTR in ein LPCTSTR umzuwandeln

Habs schon mit reinterpret_cast<LPCTSTR>(BSTR-Variable) versucht, allerdings bekomme ich da nur das erste Zeichen des Strings.

Wer kann mir helfen :confused:
 
Die MS-spezifische Klasse _bstr_t hilft dir da:

Einfach _bstr_t( BSTR ) einsetzen, das hat einen const char* operator (=LPCTSTR).

Dafür braucht man comutil.h und comsupp.lib.

Bei MFC ist das glaube ich schon mit drin, da kann man einfach bstr_t verwenden.
 
Hallo,

für mich bitte noch einmal:
Habe definiert:

_bstr_t bstrValue(_T("aaaa"));
char chBuffer[40];

Im Speicher steht dann: 00 61 00 61 00 usw... also hinter jedem Buchstaben eine Hex-0.
Wie kann ich jetzt das Ganze in eine "normale" C-String bringen: 61 61 61 61 00
 
Du hast den String als Multbyte-Code initialisiert - _T -, da belegt jeder Code zwei Byte, deshalb die Hex-Null v o r dem Zeichen. Für die Konvertierung gibt es Makros, sieh mal in der MSDN unter Multibyte und Konvertierung nach.

Mfg

langer
 
Zurück