c++截取汉字和英文混合字符串

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

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

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

参看了此处。

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

#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.sizeif(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++截取汉字和英文混合字符串相关推荐

  1. python分割字符串中文_python 分割中文英文混合字符串的正确方法

    python 里的字符编码不统一导致中英文的处理有不同的结果,下面介绍中文英文混合字符串 split 的方法. 分割词 #!/usr/bin/env python # -*- coding: utf- ...

  2. python--中英文混合字符串的切分(中文按字断开,英文按单词分开,数字按空格等特殊符号断开)

    待切分句子: s = "12.China's Legend Holdings will split its several business arms to go public on sto ...

  3. php中文字符串转英文,php 字符串转数组 提取中文 提取英文 字符串类型

    获取字符串类型/** * 判断中英文 */ public function checkStr($str){ $output = ''; ///\/i $a = preg_match('/[' . ch ...

  4. PHP判断字符串是纯英文、纯汉字或汉英混合

    PHP判断字符串是否为中文(或英文)的方法,除了正则表达式判断和拆分字符判断字符的值是否小于128 外还有一种比较特别的方法. 使用php中的mb_strlen和strlen函数判断 方法比较简单:分 ...

  5. php判断字符串里有英文,PHP针对中英文混合字符串长度判断及截取方法示例

    本文实例讲述了PHP针对中英文混合字符串长度判断及截取方法.分享给大家供大家参考,具体如下: /** * * 中英混合字符串长度判断 * @param unknown_type $str * @par ...

  6. ASP如何计算中英文混合字符串长度和截取字符串

    用ASP做网站的时候经常会碰到要截取字符串的情况.ASP中的Len函数不管是中文字符,还是英文字符,统统按一个单位来计算,由于一个中文字符的宽度是一个英文字符宽度的两倍,在中英文混合的情况下字符串实际 ...

  7. python中英文字符和中文字符存储长度不同_Django如何正确截取中英混合字符串及表单中限制中文字符中长度...

    中文字符和英文字符所占的字节长度是不一样,一个是2个字节,一个是1个字节,这给我们用英文的web框架开发中文app带来了麻烦.比如Django自带过滤器truncatewords并不支持截取中文,另外 ...

  8. java 统计汉字个数_Java简单统计字符串中汉字,英文字母及数字数量的方法

    本文实例讲述了java简单统计字符串中汉字,英文字母及数字数量的方法.分享给大家供大家参考,具体如下: package org.zhy.demo.algorithm; /** * 有一个字符串,其中包 ...

  9. 字母数字混合提取数字C语言,如何将包含汉字,字母和数字的混合字符串转换为纯数字...

    如何将包含汉字,字母和数字的混合字符串转换为纯数字? 假设有一个车牌号为字符串的字符串,字符串char * car_no =" Zhejiang B.123A8";如何将字符串转换 ...

最新文章

  1. 点击复制-表格选择数据
  2. WordCount程序
  3. 阿里云推出全球首个影像类应用一站式解决方案:智能云相册
  4. 国资委:九月份常州光伏出口大增 新兴市场增幅亮眼
  5. 关于Notes更改internet密码所需的缓存时间
  6. 边沿检测—以脉冲形式给出信号
  7. python测试代码怎么写_如何使用python做单元测试?
  8. 中国刹车片自动检测系统行业市场供需与战略研究报告
  9. jqGrid数据列表和表单的列隐藏/显示
  10. android 解析XML方式(二)
  11. 字符串、数组处理方法总结
  12. ESP8285调试 IOT_Demo
  13. Python读写Excel实现大量数据处理
  14. 前端性能优化(图片优化)
  15. HMAC-SHA1加密算法c++与java的实现
  16. 码农的2019又开始了,抓不住重点的我很悲催
  17. UE4 如何将材质Material保存为本地图片Png
  18. IT服务管理标准化解决方案实践
  19. Moo Volume
  20. Android列表小部件(Widget)开发详解

热门文章

  1. C++ unsigned
  2. aft-fuzz 小白安装 macOS
  3. 你需要知道的 15 个很棒的 CSS 动画库
  4. vr 软件linux,你在VR中使用Linux系统已不是梦想
  5. [Linux] Samba服务器配置 安全级别为share
  6. 网络环境ping丢包率测试
  7. 短信删了怎样找回信息
  8. mt管理器用sh文件双开应用(多开)
  9. Linux用户及权限管理,常用的工具命令find,wc,du,visudo,常用系统管理命令,Linux压缩管理,gzip,Bzip2,Tar
  10. 用java实现字符串的部分应用