求gbk字符个数

来源:互联网 发布:买了域名之后怎么绑定 编辑:程序博客网 时间:2024/06/07 18:36
 转自:http://blog.csdn.net/zhuimengzh/article/details/6706007#
[cpp] view plain copy
  1.    
[cpp] view plain copy
  1. 13.编写gbk_strlen 函数,计算含有汉字的字符串的长度,汉字作为一个字符处理;  
  2. 已知:汉字编码为双字节,其中首字节<0,尾字节在0~63 以外;(如果一个字节是-128~127)  
[cpp] view plain copy
  1.    
[cpp] view plain copy
  1. #include <iostream>  
  2. using namespace std;  
  3. /* 
  4. 13.编写gbk_strlen 函数,计算含有汉字的字符串的长度,汉字作为一个字符处理; 
  5. 已知:汉字编码为双字节,其中首字节<0,尾字节在0~63 以外;(如果一个字节是-128~127) 
  6. */  
  7.   
  8. int gdk_strlen(const char *addr){  
  9.     const char *p=addr; //p用于后面的遍历  
  10.     while (*p)  //当遇到\0时结束  
  11.     {  
  12.         if ((*p<0)&&(*(p+1)<0||*(p+1)>63)) //如果是汉字,作为一个字符处理  
  13.         {  
  14.         addr++;   
  15.         p+=2;  
  16.         }  
  17.         else//否则向前移动一步  
  18.             p++;  
  19.         }  
  20.     }  
  21.     return p-addr; //首地址和末地址之差为含有汉字的字符串长度  
  22. }  
  23.   
  24. void main(){  
  25.     char s[10]="ab含d汗";  
  26.     int a=gdk_strlen(s);  
  27.     cout<<a<<endl;  
  28.     system("pause");  
  29. }  
0 0
原创粉丝点击