VC Const char * 转为 WCHAR 的问题
代码如下:
代码出处: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
是什么原因呢?如何解决?
#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
是什么原因呢?如何解决?
...全文
相关推荐
C++char无法转为LPCWSTR的解决方法收集。
C++char无法转为LPCWSTR的解决方法收集。这是我自己在百度上搜索回来的方法的小归纳,是基于Vs2010开发平台的。
VC中常用数据类型介绍
介绍VC数据类型 如: 标识符 实际类型 意义 CHAR char 8位Windows(ANSI)字符。 CCHAR char 8位Windows(ANSI)字符。 PSZ char* 一个以"NULL"结束的Windows字符串的指针 {转载的,混点分真不容易}
VC--文件操作函数(file)
VC下对File类的读写操作函数,有例子和结果,很详细
C++编程之CString、string与、char数组的转换
主要介绍了C++编程之CString、string与、char数组的转换的相关资料,希望通过本文能帮助到大家,让大家学习理解这部分内容,需要的朋友可以参考下
VC文件读写函数
涉及VC文件读写的函数,包括函数详解和相应的代码示例,是有益的参考


图形处理/算法
