C++字符类型转换(BSTR、_bstr_t、CString、char *、LPCTSTR转换)

1、CString转BSTR

BSTR bstr;
CString strSql; 
bstr = strSql.AllocSysString();
… 
SysFreeString(bstrText); // 用完释放 

注意:用完之后必须使用SysFreeString 释放!!!

2、BSTR转CString

//方法一
BSTR bstr = ::SysAllocString(L"Test"); 
CString strSql; 
strSql.Empty(); 
strSql = (LPCSTR)bstr;

//方法二
BSTR bstr = ::SysAllocString(L"Test"); 
CString str(bstr);

3、CString转_bstr_t

_bstr_t bstr;
CString strSql; 
bstr = (_bstr_t)strSql;

4、_bstr_t转CString

_bstr_t bstr;
CString strSql; 
strSql = (LPCSTR)bstr;

5、BSTR转char*

//方法一,使用ConvertBSTRToString
BSTR bstrText = ::SysAllocString(L"Test"); 
char* lpszText2 = _com_util::ConvertBSTRToString(bstrText); 
SysFreeString(bstrText); // 用完释放 
delete[] lpszText2; 

//方法二,使用_bstr_t的赋值运算符重载
_bstr_t b = bstrText; 
char* lpszText2 = b; 

6、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); 

7、BSTR 转LPCTSTR

//方法一:
_bstr_t strstr = bstrtext;
LPCTSTR lpctstrname = strstr;

//方法二:
CString str = bstrtext;
LPCTSTR lpctstrname = (LPCTSTR)str;

8、LPCTSTR转CString

//方法一:
LPCTSTR lpctStr;
CString cStr=lpctStr;

//方法二:
LPCTSTR p; 
CString str="hello"; 
p=str.GetBuffer(str.GetLength()); 
str.ReleaseBuffer();

9、CString转char*

//方法一
CString cstr = _T("test")
//声明标识
USES_CONVERSION;
//函数T2A和W2A均支持ATL和MFC中的字符
char * pFileName = T2A(cstr);   
//char * pFileName = W2A(cstr); //也可实现转换

//注意:有时候可能还需要添加引用#include 

10、CString转char*

//方法一
char *p = "test";
CString str(p);

//方法二
char * pFileName = "test"; 
USES_CONVERSION;
CString s = A2T(pFileName);
//CString s = A2W(pFileName);

 

你可能感兴趣的:(C++)