送分题,CString转成USHORT数组

netcoder 2007-09-08 06:02:09
一个掺杂中英文的CString, 转换成USHORT数组,比如

CString str="中a国";
USHORT sz[100];

要求转换后
把'中'保存至 sz[0]
把'a'保存至 sz[1]
把'国'保存至 sz[2]

...全文
329 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
netcoder 2007-09-11
  • 打赏
  • 举报
回复
怎么想送分都送不出去呢
netcoder 2007-09-10
  • 打赏
  • 举报
回复
我也是没有办法,因为我要调用的是一个函数参数就是 USHORT数组
但是我得到就是一个CString,不转换的话,最后的结果就不对,只好到这里也求助诸位了!
dyw 2007-09-10
  • 打赏
  • 举报
回复
汉字编码对照表
http://www.herongyang.com/gb2312/
netcoder 2007-09-10
  • 打赏
  • 举报
回复
suyixi(新人乙):
---------------
你的代码执行后的编码也是unicode的
dyw 2007-09-10
  • 打赏
  • 举报
回复
转换成Unicode或UTF8比较常见。

我想要转换后编码不变的,还是GB2312
--------
其实,按你的要求,转换后字符串已经不是GB2312了。

转换为Unicode统一处理后,需要gb2312再转回来。
blueink_200451 2007-09-10
  • 打赏
  • 举报
回复
CString str="中 a 国";
USHORT sz[100];

_bstr_t bStrtmp = str.getbuffer();
wcscpy(sz, bStrtmp);
suyixi 2007-09-10
  • 打赏
  • 举报
回复
char *pChar = "中a国";
USHORT szData[100];
memset(szData,0,100*sizeof(WCHAR));
MultiByteToWideChar(CP_ACP,0,pChar,strlen(pChar),szData,100);
netcoder 2007-09-10
  • 打赏
  • 举报
回复
谢谢两位回答:
---------------
我想这个问题应该是个常见问题,有没有比较好的解决办法?
Yofoo 2007-09-09
  • 打赏
  • 举报
回复
同意dyw(道不同不相为谋)

或者先转换成wchar, 再一个一个转换成char
dyw 2007-09-09
  • 打赏
  • 举报
回复
一般汉字的编码的两个字节都大于0x7F,你可根据这个特点自己写一个转换函数:
当前字符小于0x7F时,拷贝一个字节到目标地址;
当前字符大于0x7F时,拷贝两个字节到目标地址。
netcoder 2007-09-08
  • 打赏
  • 举报
回复
先谢谢上面主为了
zzz3265(zzz):

----------
你的代码转换后,ushort里面保存的是UNICODE编码了,这个不是我要的
我想要转换后编码不变的,还是GB2312
Yofoo 2007-09-08
  • 打赏
  • 举报
回复
CString str="中a国";
USHORT sz[100];

_bstr_t bStrtmp = str.getbuffer();
wcscpy(sz, bStrtmp);
dyw 2007-09-08
  • 打赏
  • 举报
回复
USHORT 就是 wchar的定义,实际上就是多字节字符串转换为宽字节。参考:
http://blog.csdn.net/norains/archive/2006/12/25/1461174.aspx
netcoder 2007-09-08
  • 打赏
  • 举报
回复
大哥帮忙说详细点
dyw 2007-09-08
  • 打赏
  • 举报
回复
MultiByteToWideChar
文件管理 一、实验目的: 1.了解os中文件的组织和管理。 2.熟悉文件中所用的数据结构。 二、实验要求: 1. 设计一个N个用户的文件系统,每个用户最多保存m个文件。 2. 限制用户在一次使用中只能打开L个文件。 3. 系统应能检查输入命令的正确性,出错能显示出原因。 4. 对文件必须设置保护措施,如只读、写、执行等。在每次打开时再次设置保护级别,即 可有二级保护。 5. 对文件的操作至少有以下几条命令 create:建文件 delete:删文件 open:打开文件 close:关闭文件 read:读文件 write:写文件 举例:主文件目录 mfd=record username :string[maxlen]; files :array[1..L] of ufd; ofiles :arrau[1..S] of uod end; 用户打开文件目录表: uod=record filename:string[maxlen]; attrib:attrib; len:integer; status:(open,create); rp,up:integer; end; 用户文件目录: ufd=record fielname:string[maxlen]; attribΛro,rw); len:integer; addr:integer; end; 流程图: 开始 输入用户名 在MFD中找到该用户名 显示该用户名UFD中所有文件 初始化AFD 操作 命令 CREATE DELTET OPEN CLOSE READ WRITE 保护当前文件目录 结束 二、主要数据结构 界面采用VC6 MFC环境开发 #define MAXFILE 20 //每个用户最多保存20个文件 #define MAXUSER 10 //假想文件系统最多支持的人数 #define BLOCKSIZE 32 //虚拟磁盘中物理块为每块32字节 #define DISKSIZE BLOCKSIZE*1000 //虚拟磁盘容量为1000*32=32K struct UFD //说明文件项的结构数组 { char FileName[15]; char Time[16]; //文件建立或修改时间 如2003/5/6 12:00 bool IsExist; //文件是否存在,删除时标为0 bool IsShared; //共享标记,共享文件可被其它用户所访问 bool AttrRead; //文件是否可读 bool AttrWrite; //文件是否可写 bool AttrExecute; //文件是否可执行 HTREEITEM treeNode; //用于树控件显示的结点句柄 USHORT FileLen; //文件占用字节数 USHORT BlockNum; //文件占用的物理块数 USHORT FileLink[100];//文件物理块地址数组,每块32字节,限定一个文件最大100*32=3200字 节 }; struct MFD { char UserName[10]; //主目录用户名 bool IsExist; //该用户否存在 UFD ufd[MAXFILE]; //用户文件数组 USHORT nItem;//UFD个数 }; struct HEADBLOCK { BYTE pStack; //堆栈指针 SHORT pBlock[10]; //块号 pBlock[10]是下一个盘块号逻辑地址 }; struct BLOCK //虚拟磁盘的物理块数据结构 { union{ BYTE block[32];        //一块为32字节 HEADBLOCK HeadInfo; }; }; struct FAT { BLOCK SuperBlock; //超级块,指示第一个空闲块逻辑号 USHORT MaxOpen; //该用户同时可打开的最大文件数 USHORT UserNum; //最户数 MFD Mfd[MAXUSER]; //最多可支持10个用户 }; //空闲块成组链接法 bool OpenList[MAXUSER][MAXFILE]; //描述文件是否打开的布尔型数组 FAT FileFAT;           //描述文件记录项的FAT结构 CFile FATIO; //负责和VDISK.DAT打交道的文件句柄 CString CurrentUser; //当前登录的用户名 Int CurrentID; //前前登录的用户标识号 说明:本实验采用模拟文件结构的方法,把记录用户帐号,用户文件和磁盘块的信息 用当前目录下的VDISK.DAT来记录,可以把VDISK.DAT看成是一个虚拟的磁盘,其头部是 FAT结构,用来记录各个用户和文件信息,紧接着是空闲

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧