求指导VC2008 wchar_t* 怎么转Cstring 谢谢了

现有一个wchar_t*变量Name里面有值想通过addstring函数添加到CCOMBOBOX控件中。。编译器报错不能将wchar_t*转换为LPCTSTR格式新手转的... 现有 一个 wchar_t* 变量 Name 里面有值 想通过 addstring 函数添加到CCOMBOBOX控件中。。 编译器报错
不能将wchar_t* 转换为LPCTSTR 格式
新手 转的迷糊了。。。求代码
展开
 我来答
zjnny
2013-10-27 · TA获得超过2037个赞
知道小有建树答主
回答量:1055
采纳率:100%
帮助的人:1062万
展开全部
多字节 宽字节转换

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 )
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式