怎样把Cstring转换成wchar

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样把Cstring转换成wchar相关的知识,希望对你有一定的参考价值。

参考技术A 多字节 宽字节转换

wchar_t是UNICODE码,
(1)多字节转成宽字节
wstring xx::converToWideChar( const string& str ) int len = 0; len = str.length(); int unicodeLen = ::MultiByteToWideChar(CP_UTF8,0,str.c_str(),-1,NULL,0); wchar_t * pUnicode; pUnicode = new wchar_t[unicodeLen+1]; memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t)); ::MultiByteToWideChar(CP_UTF8,0,str.c_str(),-1,(LPWSTR)pUnicode,unicodeLen); wstring rt; rt = ( wchar_t* )pUnicode; delete pUnicode; return rt; 使用时:
String input;<?xml:namespace prefix = o />
wstring wstrInput;
wstrInput = converToWideChar( input );
CString strText;
strText.Format( _T( “%s” ), wstrInput.c_str() );
(2)宽字节转成多字节
string BasicUtility::converToMultiChar( const wstring& str )

char* pElementText;
int iTextLen;
// wide char to multi char
iTextLen = WideCharToMultiByte( CP_ACP,
0,
str.c_str(),
-1,
NULL,
0,
NULL,
NULL );
pElementText = new char[iTextLen + 1];
memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );
::WideCharToMultiByte( CP_ACP,
0,
str.c_str(),
-1,
pElementText,
iTextLen,
NULL,
NULL );
string strText;
strText = pElementText;
delete[] pElementText;
return strText;

使用时:
CString strPdataFile;
string strKbFile;
strKbFile =converToMultiChar( ( LPCWSTR )strPdataFile )

以上是关于怎样把Cstring转换成wchar的主要内容,如果未能解决你的问题,请参考以下文章

C++中怎么将WCHAR字符串转换成CHAR字符串?

C++中的WCHAR_T怎么转化成CHAR?

wstring如何转换成 LPCTSTR

怎么把char型数组转换为lpwstr

C++ MFC CString怎么转换成Double

C++CString转换为const char *类型