char *转化成unsigned short *型
问题如题目,如何将char数组转化成unsigned short型,由于操作的是汉字,所以之前的函数都是unsigned short型传参的
我写的转化代码如下,请高人指教,谢谢!
- C/C++ code
char temp[10] = "试一试";DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, temp, -1, NULL, 0);unsigned short *w = new unsigned short [dwNum];MultiByteToWideChar (CP_ACP, 0, temp, -1, w, dwNum);
用的是VS2010,可是提示IntelliSense: argument of type "unsigned short *" is incompatible with parameter of type "LPWSTR",unsigned short不是两个字节吗?LPWSTR也是两个字节啊!为什么过不去呢?
正确的应该怎么转换啊?
[解决办法]
干嘛不用wchar_t,这个才是宽字符的类型。
[解决办法]
我没看明白么?
char temp[10] = "试一试";
DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, temp, -1, NULL, 0);
unsigned short *w = new unsigned short [dwNum];
MultiByteToWideChar (CP_ACP, 0, temp, -1, (LPWSTR)w, dwNum);
WCHAR wTemp[10];
memcpy(wTemp,w,sizeof(WCHAR)*dwNum);
[解决办法]
@楼上
第一遍是获得长度 这就是这个API最淡疼的地方。
话说为什么一定要用ushort呢?直接用wchar_t不行么?
[解决办法]
@7楼 强制转换正解。不过这个函数我好像每次用都是调用两次的说……感觉如果第一次不获得长度,这个API内部会坏掉?求解
@楼上。调成release试试。怎么被奇怪的程序重载了new操作符呢
[解决办法]
[解决办法]
字符串结尾的 \0 是否也要处理一下?
[解决办法]