WEB 开发 开发语言 Java 技术 .Net 技术 数 据 库 硬件使用
图象媒体 Linux/Unix 移动平台 嵌入开发 Windows 专区 软件工程
Ajax 技术 | ASP | PHP | ASP.NET | C# | JSP | Access | Oracle | 网页设计 | Flash | 安全专题 | IIS | VC/MFC | Delphi | C/C++
 你的位置:首页 > 开发语言 > VC/MFC

这样的字符串如何转换成汉字?
[ 来源:ITWENKU 时间:2006-11-2 21:50:11 | 浏览:199人次 ]

我爱你

我已经知道它的内容是“我爱你”,内码为0x6211,0x7231,0x4f60的unicode串就是“我爱你”
我已经知道用WideCharToMultiByte把内码为0x6211,0x7231,0x4f60的unicode串转换成ANSI的字符串,但如何把 char buf[32]="我爱你"转换成内码为0x6211,0x7231,0x4f60的unicode串?
直接定义我知道可以这样:
unsigned short u_str[10];
u_str[0]=0x6211;
u_str[1]=0x7231;
u_str[2]=0x4f60;

但我要能用一段代码把buf这个char串转换成u_str这个unsigned short串;
请各位大虾指点!



char buf[32]="我爱你";
char tmp[5] = {0, 0,0,0,0};
unsigned short u_str[10];
for(int i = 0; i < 3; i++)
{
memcpy(tmp, buf + 8 * i+3, 4);
u_str[i] = (unsigned short)strtol(tmp, NULL, 16);
}


一步一步来,先分析字符串,得到wchar_t, then...


既已用 WideCharToMultiByte , 若想反取之, 则请用 MultiByteToWideChar


TCHAR lpsz[]=_T("我爱你我爱你");

int nlpsz=sizeof(lpsz)-1; //测试字符串的长度,不包含\0
int nWbufferlen=(nlpsz/8)+1;//保存该unicode字符串的WCHAR缓冲区长度,不是字节长度

WCHAR *wsz2=new WCHAR[nWbufferlen];
memset(wsz2,0,nWbufferlen*sizeof(WCHAR));

int nwsz2=nlpsz/8;//unicode字符串的长度,不包含\0\0
for(int i=0;i<nwsz2;i++)
{
char * endptr=NULL;
unsigned long nOut=_tcstoul(&(lpsz[i*8+3+0]),&endptr,16);
wsz2[i]=(unsigned short)nOut;
}

int nResultBufferlen=nwsz2*(sizeof(WCHAR)/sizeof(TCHAR))+1;
//保存TCHAR结果的字符串缓冲区字节长度
TCHAR *lpszResult=new TCHAR[nResultBufferlen];
memset(lpszResult,0,nResultBufferlen);
//转换unicode to gb2312
WideCharToMultiByte( CP_ACP, 0, wsz2, -1,
lpszResult, nResultBufferlen, NULL, NULL );
TRACE ("unicode-->GB2312:%s\n",lpszResult);

delete[] lpszResult;
delete[] wsz2;


上述代码,之所以没有用_tcslen或者wcslen,因为考虑到如果习惯使用Run Time lib的字符串操作函数,在线程中使用不安全。更多情况下习惯于操作缓冲区,或者使用platform sdk中的safe string来进行操作字符串


mark



感谢谢各位!
lfchen(一条晚起的虫)的代码正是我想要的!

 相关文章
·CList类的问题
·在视图中加入背景的问题?
·内存释放问题,看看这个函数哪里有问题?
·如何实现切分的两个窗口同时滚动?
·在oncreate()中可以得到屏幕坐标或者客户区坐标吗?
·关于画弧算法的问题

 推荐文章
求助--补全代码
如何知道一个线程还在“正常运行”
访问网络出现异常
如何将一个文件夹里的文件组织成xml描述信息
想将一些东东按拼音排序!!
求Debugging application 的sourcecode
vc开发的activex可以在网页中用吗?
请问什么时候需要为资源(例如对话框或按钮)新建一个类?
如何用SQL语言完成复杂字符串的筛选
有关DNS被屏蔽的问题?
MDI程序,如何像VC界面那样,编辑对话框时候在旁边显示标尺?
windows搜索驱动的默认路径是什么
 版权所有:IT问库
copyright © 2006 www.itwenku.cn all rights reserved.