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;
方法三的优点是内存自动释放,无需程序员关心,推荐使用。
方法四用堆栈作为临时转换空间,因此不适合太大字符串的转换。
方法一:
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;
方法三的优点是内存自动释放,无需程序员关心,推荐使用。
方法四用堆栈作为临时转换空间,因此不适合太大字符串的转换。
相关文章推荐
- WinCe和Windows Mobile下的Unicode和ANSI字符串转换的方法
- Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
- Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
- Ansi、Unicode、UTF8等编码字符串之间的转换和写入文本文件(学习中……)
- 解决无法在unicode和非unicode字符串数据类型之间转换的方法详解
- 字符串处理 - ANSI - Unicode - UTF8 转换
- Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
- Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
- 移植性问题のCString类型转换,字符串操作和UNICODE、ANSI字符集
- c++ 字符串反转方法 UNICODE 和 ANSI 版本
- CString类型转换,字符串操作和UNICODE、ANSI字符集
- Ansi、Unicode、UTF8等编码字符串之间的转换和写入文本文件(学习中……)
- JavaScript中字符串与Unicode编码互相转换的实现方法
- Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
- string 和 wstring 互相转换的方法(即 Ansi & Unicode 在标准库下的互转)
- ANSI,UNICODE, UTF-8 字符串之间的相互转换
- Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
- 字符串和(Unicode)十六进制数之间的转换方法包含(C#和VB6)
- VC中Ansi、Unicode、UTF8字符串之间的转换和写入文本
- JAVA方法 字符串与unicode的相互转换