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

本文详细介绍了在C++中,各种字符串类型之间的转换方法,包括CString到BSTR、BSTR到CString、CString到_bstr_t、_bstr_t到CString、BSTR到char*、char*到BSTR、BSTR到LPCTSTR、LPCTSTR到CString、CString到char*等常见转换方式,为开发者提供了全面的参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 <afxpriv.h>

10、CString转char*

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值