c++截取汉字和英文混合字符串代码实例

  

在c++里截取字符串可以使用string.substr(),可是这个函数只能按英文来截取,

  

如果是汉字可能就要计算好字符个数,如果是汉字和英文混合,那就只能望洋兴叹了。

  

可是恰好我需要这样一个函数,于是就自己实现了一个,其中如何判断汉字和英文

  

参看了此处。

  

代码简单也无优化,若有更好的方法欢迎提出,代码如下。

        # include & lt; iostream>   # include & lt; string>   # include   # include   # include   使用名称空间性病;      int is_zh_ch (char p)   {/*汉字的两个字节的最高为都为1,这里采用判断最高位的方法   将p字节进行移位运算,右移8位,这样,如果移位后是0,   则说明原来的字节最高位为0,不是1那么也就不是汉字的一个字节   */如果(~ (p祝辞祝辞8)==0)   {   返回1;//代表不是汉字   }      返回1;   }            子字符串(string str, int, int结束=1)   {      如果类型id (str)==类型id(字符串),,str.length()在0)   {   int len=str.length ();      字符串tmp=" ";//先把str里的汉字和英文分开   向量& lt; string>倾倒;   int i=0;   而(i<兰)   {   如果(is_zh_ch (str.at (i))==1)   {   dump.push_back (str.substr(我,2));   我=我+ 2;      }   其他的   {   1)dump.push_back (str.substr(我);   我=我+ 1;   }   }         结束=end> 0 & # 63;结束:dump.size ();//结束默认为dump.size   如果(start<0 | | start>结束)   printf("开始是错的”);//直接从垃圾堆里取即可   (我=开始;i<=结束;我+ +)   {   tmp +=转储(张);   }      返回tmp;   }   其他的   {   printf (" str不是字符串\ n”);   返回";      }   }      int main ()   {   字符串p="半山无极”;   cout<& lt;子(p, 1, 1) & lt; & lt; endl;   cout<& lt;子(p 2 2) & lt; & lt; endl;   cout<& lt;子(p, 3);   }      

以上所述是小编给大家介绍的c++截取汉字英文混合字符串详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

c++截取汉字和英文混合字符串代码实例