Ansi字符串转换为Unicode字符串的四种方法

无意中发现下面四种转换方法,总结如下:

方法一:

CString strData;

int nWDataLen=::MultiByteToWideChar(CP_ACP, NULL, (LPCSTR)(LPCTSTR)strData,nDataLen, NULL, 0);
pwszData=new wchar_t[nWDataLen];
::MultiByteToWideChar(CP_ACP, NULL, (LPCSTR)(LPCTSTR)strData, nDataLen, pwszData, nWDataLen);

 

 

方法二:

pwszData=_com_util::ConvertStringToBSTR((LPCSTR)(LPCTSTR)strData);

...
//用完释放

SysFreeString(pwszData);

 

 

方法三:

 bstr_t bsData = (LPCSTR)m_strData;

pwszData = bsData;

 

方法四:

uses_conversion;

pwszData = A2W((LPCSTR)m_strData);

其实以上四种方法本质都一样,最终都是调用api MultiByteToWideChar来实现的, bstr_t类是BSTR类型的封装类,BSTR就是unicode的字符串。

typedef LPWSTR BSTR;

方法三的优点是内存自动释放,无需程序员关心,推荐使用。

方法四用堆栈作为临时转换空间,因此不适合太大字符串的转换。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值