解决方案 »
- 求助vs6环境给程序添加闪烁标题功能。请大家指点。
- 编辑框得消息EN_CHANGE得消息函数OnChangeEDIT()函数是什么时候被调用得呢?
- 求汉诺塔的vc源码
- 多文档:如何以给定的文件名新建一个文档
- 紧急求助:如何编写DDE的Client程序?(高分求助)
- ■■北京政府采购,M$出局!我编写的VC程序如何移植到Linux平台??■■
- DLL里的线程关闭对话框崩溃
- TreeListView的多选问题
- 谁能给出“自定义消息”“发送消息”“截获消息”“消息响应”等详细资料和例程?
- 如何通過代理服務器向外ping?
- 求助 ComboBox无法添加项?? 小弟先谢过了
- 如何实现单击高亮Listctcl控件的一项??
memset(temp, '\0', (arrLen+1) * sizeof(wchar_t));试试
CString Utf8ToWchar(string a, int arrLen)
{
CString res = _T(""); int len = MultiByteToWideChar(CP_UTF8, 0, a.c_str(), -1, NULL, 0);//应该-1,表示0结尾
wchar_t *temp = new wchar_t[len + 1];//用计算后的长度len
char *buf = new char[arrLen + 1];
memset(buf, '\0', arrLen + 1);
memset(temp, '\0', (arrLen+1)*sizeof wchar_t);//memset长度是按字节算的,sizeof是操作符,可以不加括号 MultiByteToWideChar(CP_UTF8, 0, a.c_str(), -1, temp, len+1);//注意大小
WideCharToMultiByte(CP_ACP, 0, temp, -1, buf, arrLen+1, NULL, NULL);
// res.Format("%s",temp);
// res.ReleaseBuffer(); res.Format("%s",buf);
delete temp;
delete buf;
return res;
}
所以utf8可能会大一些