VC Const char * 转为 WCHAR 的问题

微wx笑 微wx笑 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
代码如下:

#include "StdAfx.h"
#include "aw.h"
#include "windows.h"

namespace
{
wchar_t* Ansi2Unicode(const char* szAnsi)
{
CHECK_RET(!szAnsi, NULL)

// 预转换,得到所需空间的大小
int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), NULL, 0);
// 分配空间要给'/0'留个空间,MultiByteToWideChar不会给'/0'空间
wchar_t* wszString = new wchar_t[wcsLen+1];
CHECK_RET(!wszString, NULL)
::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), wszString, wcsLen);
// 最后加上结束符'/0'
wszString[wcsLen] = L'/0';
return wszString;
}

char* Unicode2Ansi(const wchar_t* wszString)
{
CHECK_RET(!wszString, NULL)

int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL);
char* szAnsi = new char[ansiLen + 1];
CHECK_RET(!szAnsi, NULL)
// Unicode版对应的strlen是wcslen
::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL);
// 最后加上'/0'
szAnsi[ansiLen] = '/0';
return szAnsi;
}
}


代码出处:http://blog.csdn.net/xjanker2/article/details/5737554


请问“CHECK_RET”是一个宏吗?
应该包含哪个头文件?

另外,

// 最后加上结束符'/0'
wszString[wcsLen] = L'/0';

编译时会产生:warning C4066: characters beyond first in wide-character constant ignored

是什么原因呢?如何解决?
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
微wx笑
微wx笑 优质创作者: Java技术领域 优质创作者: Java技术领域领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
图形处理/算法 19,463 成员 50,678 内容