送分题,CString转成USHORT数组
一个掺杂中英文的CString, 转换成USHORT数组,比如
CString str= "中a国 ";
USHORT sz[100];
要求转换后
把 '中 '保存至 sz[0]
把 'a '保存至 sz[1]
把 '国 '保存至 sz[2]
[解决办法]
MultiByteToWideChar
[解决办法]
USHORT 就是 wchar的定义,实际上就是多字节字符串转换为宽字节。参考:
http://blog.csdn.net/norains/archive/2006/12/25/1461174.aspx
[解决办法]
CString str= "中a国 ";
USHORT sz[100];
_bstr_t bStrtmp = str.getbuffer();
wcscpy(sz, bStrtmp);
[解决办法]
一般汉字的编码的两个字节都大于0x7F,你可根据这个特点自己写一个转换函数:
当前字符小于0x7F时,拷贝一个字节到目标地址;
当前字符大于0x7F时,拷贝两个字节到目标地址。
[解决办法]
同意dyw(道不同不相为谋)
或者先转换成wchar, 再一个一个转换成char
[解决办法]
char *pChar = "中a国 ";
USHORT szData[100];
memset(szData,0,100*sizeof(WCHAR));
MultiByteToWideChar(CP_ACP,0,pChar,strlen(pChar),szData,100);
[解决办法]
转换成Unicode或UTF8比较常见。
我想要转换后编码不变的,还是GB2312
--------
其实,按你的要求,转换后字符串已经不是GB2312了。
转换为Unicode统一处理后,需要gb2312再转回来。
[解决办法]
汉字编码对照表
http://www.herongyang.com/gb2312/