gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章c++截取汉字和英文混合字符串代码实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

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

参看了此处.

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
#include <string>
#include<cstdio>
#include<vector>
#include<typeinfo>
using namespace std;
 
int is_zh_ch( char p)
{
 
   /*汉字的两个字节的最高为都为1,这里采用判断最高位的方法
   将p字节进行移位运算,右移8位,这样,如果移位后是0,
   则说明原来的字节最高位为0,不是1那么也就不是汉字的一个字节
   */
   if (~(p >> 8) == 0)
   {
     return 1; //代表不是汉字
   }
 
   return -1;
}
 
 
 
string sub(string str, int start, int end=-1)
{
 
   if ( typeid (str)== typeid (string) && str.length()>0)
   {
     int len=str.length();
 
     string tmp= "" ;
 
     //先把str里的汉字和英文分开
     vector <string> dump;
     int i=0;
     while (i<len)
     {
       if (is_zh_ch(str.at(i))==1)
       {
         dump.push_back(str.substr(i,2));
         i=i+2;
 
       }
       else
       {
         dump.push_back(str.substr(i,1));
         i=i+1;
       }
     }
 
 
     end=end>0?end:dump.size(); //end默认为dump.size
     if (start<0||start>end)
       printf ( "start is wrong" );
      //直接从dump里取即可
     for (i=start; i<=end; i++)
     {
       tmp+=dump[i-1];
     }
 
     return tmp;
   }
   else
   {
     printf ( "str is not string\n" );
     return "" ;
 
   }
}
 
int main()
{
   string p= "半山wuji" ;
   cout<<sub(p,1,1)<<endl;
   cout<<sub(p,2,2)<<endl;
   cout<<sub(p,3);
}

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

最后此篇关于c++截取汉字和英文混合字符串代码实例的文章就讲到这里了,如果你想了解更多关于c++截取汉字和英文混合字符串代码实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com