读书人

送分题,CString转成USHORT数组,该如何

发布时间: 2012-02-06 15:52:44 作者: rapoo

送分题,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/

读书人网 >VC/MFC

热点推荐