求指导VC2008 wchar_t* 怎么转Cstring 谢谢了
现有一个wchar_t*变量Name里面有值想通过addstring函数添加到CCOMBOBOX控件中。。编译器报错不能将wchar_t*转换为LPCTSTR格式新手转的...
现有 一个 wchar_t* 变量 Name 里面有值 想通过 addstring 函数添加到CCOMBOBOX控件中。。 编译器报错
不能将wchar_t* 转换为LPCTSTR 格式
新手 转的迷糊了。。。求代码 展开
不能将wchar_t* 转换为LPCTSTR 格式
新手 转的迷糊了。。。求代码 展开
展开全部
多字节 宽字节转换
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 )
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 )
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询