BSTR与char*转换

BSTR转换成char*

 方法一,使用ConvertBSTRToString。例如: 

#include 
#pragma comment(lib, "comsupp.lib") 
int _tmain(int argc, _TCHAR* argv[]){ 
BSTR bstrText = ::SysAllocString(L"Test"); 
char* lpszText2 = _com_util::ConvertBSTRToString(bstrText); 
SysFreeString(bstrText); // 用完释放 
delete[] lpszText2; 
return 0; 


  方法二,使用_bstr_t的赋值运算符重载。例如: 

_bstr_t b = bstrText; 
char* lpszText2 = b; 

char*转换成BSTR 

  方法一,使用SysAllocString等API函数。例如: 

BSTR bstrText = ::SysAllocString(L"Test"); 
BSTR bstrText = ::SysAllocStringLen(L"Test",4); 
BSTR bstrText = ::SysAllocStringByteLen("Test",4); 

  方法二,使用COleVariant或_variant_t。例如: 

//COleVariant strVar("This is a test"); 
_variant_t strVar("This is a test"); 
BSTR bstrText = strVar.bstrVal; 

  方法三,使用_bstr_t,这是一种最简单的方法。例如: 

BSTR bstrText = _bstr_t("This is a test"); 

  方法四,使用CComBSTR。例如: 

BSTR bstrText = CComBSTR("This is a test"); 

  或 

CComBSTR bstr("This is a test"); 
BSTR bstrText = bstr.m_str; 

  方法五,使用ConvertStringToBSTR。例如: 

char* lpszText = "Test"; 
BSTR bstrText = _com_util::ConvertStringToBSTR(lpszText); 

你可能感兴趣的:(BSTR与char*转换)