多一分钟学习,早一秒钟提高

VC++、C++、Socket、DirectUI、wxWidgets、Cocos2d-x、CocosCreator、Unity3D、UE4、ThinkPHP
posts - 32, comments - 12, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

判断字符串中是否含有汉字

Posted on 2013-07-15 20:37 虚空骄阳 阅读(2033) 评论(0)  编辑 收藏 引用 所属分类: C++
【方法1】
首先,汉字是双字节的编码格式!  
汉字的第一字节:是从0xB0   开始编码   
汉字的第二字节:是从0xA1   开始编码   
有了以上的了解,就不难识别出是中文,还是其他的编码,程序中只需要判断(   第一字节>=0xB0   &&   第二字节>=0xA1   )就好!
int IncludeChinese(char *str)//返回0:无中文,返回1:有中文
{
   
char c;
   
while(1)
   
{
       c
=*str++;
       
if (c==0break;  //如果到字符串尾则说明该字符串没有中文字符
       if (c&0x80)        //如果字符高位为1且下一字符高位也是1则有中文字符
               if (*str & 0x80return 1;
   }

   
return 0;
}


【方法2】
int main() 

char sztext[] = " 是ciw."
char c = 0
char szchinese[3= {0}

int i = 0, nlen = strlen(sztext); 
for(; i < nlen; i++

if( sztext[i] >= 0 && sztext[i] <= 127 ) //不是全角字符?
= sztext[i], printf("%c\n", c); 
else //是全角字符
szchinese[0= sztext[i], szchinese[1= sztext[i + 1], printf("%s\n", szchinese), i++//中文是2个字节,所以i++

}
 
return 0
}



只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理