逐个读取一个字符串CString中的内容,CString中既有中文也有英文,怎样才能区分读到的是中文还是英文? 逐个读取一个字符串CString中的内容,CString中既有中文也有英文,怎样才能区分读到的是中文还是英文?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 读一个BYTE,如果这个BYTE的内容<128,就是英文。如果>128,再读一个BYTE,合并起来为一个中文。 建议使用_UNICODE编码方式,这样所有的字符(包括汉字和字母)都占两个字节.英文字节的高8位为00,中文字符的高位和低位都不是00 先转化为 unicode编码的 wchar *, 然后再判断根据某个byte 是否 大于128 判断是不准确的,尤其是对于日文等 //mayge you can follow thisCString str = "好好学习good good study";CString tmp = "";int len = str.GetLength();TCHAR chTmp ='\0';for(int i=0;i<len-1;){chTmp = str.GetAt(i);if (chTmp < 0) {//中文字符tmp.Format("%c%c",str.GetAt(i),str.GetAt(i+1));cout<<"中文字符: "<<tmp<<endl;i+=2;} else{cout<<"英文字符: "<<str.GetAt(i)<<endl;i++;} } 作如下修改:CString str = "好好学习good good study";CString tmp = "";int len = str.GetLength();TCHAR chTmp ='\0';for(int i = 0 ; i < len;){chTmp = str.GetAt(i);if (chTmp < 0) {//中文字符tmp.Format("%c%c",str.GetAt(i),str.GetAt(i+1));cout<<"中文字符: "<<tmp<<endl;i+=2;} else{cout<<"英文字符: "<<str.GetAt(i)<<endl;i++;} } 求大家帮我剖析下面的通讯机制,合理吗?很简单的 就几句描述 谢谢了! 关于ListCtrl 请教 请教 如何在VC++中将数据生成WORD文件 求《windows核心编程》源代码 Edit的右键菜单很烦人 如何去掉?thx! 一道面试题 BChecher可以检查exe的内存,资源泄漏,但是怎么查dll的内存泄漏呢? 捕捉WM_PAINT消息,最好用什么钩子? 一个C++问题,一个有6位小数的float型数,怎么将它转换为只有一位小数的float型数 我快疯啦,该死的DLL!我自己写的DLL放到其他程序里就是用不了!错误是... 鼠标消息 对文件的剪切是怎么实现的?
如果这个BYTE的内容<128,就是英文。如果>128,再读一个BYTE,合并起来为一个中文。
根据某个byte 是否 大于128 判断是不准确的,尤其是对于日文等
CString tmp = "";
int len = str.GetLength();
TCHAR chTmp ='\0';
for(int i=0;i<len-1;){
chTmp = str.GetAt(i);
if (chTmp < 0) {//中文字符
tmp.Format("%c%c",str.GetAt(i),str.GetAt(i+1));
cout<<"中文字符: "<<tmp<<endl;
i+=2;
}
else{
cout<<"英文字符: "<<str.GetAt(i)<<endl;
i++;
}
}
CString str = "好好学习good good study";
CString tmp = "";
int len = str.GetLength();
TCHAR chTmp ='\0';
for(int i = 0 ; i < len;)
{
chTmp = str.GetAt(i);
if (chTmp < 0)
{//中文字符
tmp.Format("%c%c",str.GetAt(i),str.GetAt(i+1));
cout<<"中文字符: "<<tmp<<endl;
i+=2;
}
else{
cout<<"英文字符: "<<str.GetAt(i)<<endl;
i++;
}
}