konvertera BSTR till const char*

konvertera BSTR till const char*

En BSTR är faktiskt en WCHAR* med ett längdprefix. BSTR värde pekar på början av strängen, inte på längdprefixet (som lagras i byten precis "före" platsen som pekas på av BSTR ).

Med andra ord kan du behandla en BSTR som om det är en const WCHAR* . Ingen konvertering krävs.

Så din fråga är egentligen:"Hur kan jag konvertera en Unicode-sträng (WCHAR* ) till en char* ?” och svaret är att använda ::WideCharToMultiByte API-funktion som förklaras här. Eller, om du använder MFC/ATL i din applikation, använd ATL- och MFC-konverteringsmakron.


#include "comutil.h"

BSTR bstrVal;
_bstr_t interim(bstrVal, false);    
    // or use true to get original BSTR released through wrapper
const char* strValue((const char*) bstrVal);

Detta hanterar all konvertering från Wide Char till multibyte.