您的位置:首页 > 其它

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

2011-03-23 02:40 579 查看
无意中发现下面四种转换方法,总结如下:

方法一:

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;

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

方法四用堆栈作为临时转换空间,因此不适合太大字符串的转换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: