汉字的判断 一个字符数组array既有字母又有汉字,如果用array[i]取到第i-1个字符,如果该array[i]在0-127之外(就是汉字的半个),那么只取array[i-1]和array[i+1]如何判断这两个到底是哪个和array[i]组成汉字的???从该数组头开始读取,遇到第一个在128-255之间的,那么之后的那个肯定和他组成汉字,但是这样效率太低了。不知道各位大哥有好办法不,还请赐教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是ANSI的话,只有从头一个字节一个字节读,遇到汉字头字节就跳一个字节。只用这个办法是可靠的,别的都不可靠。如果真的是特别长的文本,非要优化的话,可以从i的位置向前找,找到连续2个<127的字符,然后从这之后仍然是一个字节一个字节读。 建议用UNICODE,这样就方便了!只要进行转化一下就行了! 效率不低吧?也就是遍历一遍字符串所在的数组啊我是用过的 感觉还可以 贴一段代码~~汉字转换为unicodefor(int i = 0 ; i < length; i++) { CString str = StrIn.Mid(i,1); unsigned char temp; strcpy((char*)&temp,str); if(temp>=128) //汉字特征 { CString strchar = StrIn.Mid(i,2); unsigned short Hex; char buffer[4]; MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,strchar,3,&Hex,1); sprintf(buffer,"%x",Hex); StrOut += buffer; StrOut += " "; i++; } else { char buffer[2]; itoa(temp,buffer,16); // StrOut += "00"; StrOut += buffer; StrOut += " "; } } 还是转成UNICODE ,就很方便了 通过MSCOMM控制串口的功能能否封装在DLL或ActiveX中(在线等) 如何实现一个类似金山词霸取词窗口的控件??? 2个socket简单问题,但不一定立刻就答对哦 1000分求解 请教~关于在工具栏中加文本框 _tsplitpath在哪个头文件中? 多线程与套接字 GDI+ 中 bitmap 转换 成 BYTE* 的问题 哪能找到HTTP协议的中文版RFC文档? opengl贴图因显卡不同 MCIWndPlay系列函数播放AVI文件时说找不到vids:wmv3加压缩程序 怎样删除文件里的相同数据最有效率?
只用这个办法是可靠的,别的都不可靠。
如果真的是特别长的文本,非要优化的话,可以从i的位置向前找,找到连续2个<127的字符,然后从这之后仍然是一个字节一个字节读。
只要进行转化一下就行了!
也就是遍历一遍字符串所在的数组啊
我是用过的 感觉还可以 贴一段代码~~
汉字转换为unicodefor(int i = 0 ; i < length; i++)
{
CString str = StrIn.Mid(i,1);
unsigned char temp;
strcpy((char*)&temp,str);
if(temp>=128) //汉字特征
{
CString strchar = StrIn.Mid(i,2);
unsigned short Hex;
char buffer[4];
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,strchar,3,&Hex,1);
sprintf(buffer,"%x",Hex);
StrOut += buffer;
StrOut += " ";
i++;
}
else
{
char buffer[2];
itoa(temp,buffer,16);
// StrOut += "00";
StrOut += buffer;
StrOut += " ";
}
}