c++截取汉字和英文混合字符串
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++截取汉字和英文混合字符串相关推荐
- python分割字符串中文_python 分割中文英文混合字符串的正确方法
python 里的字符编码不统一导致中英文的处理有不同的结果,下面介绍中文英文混合字符串 split 的方法. 分割词 #!/usr/bin/env python # -*- coding: utf- ...
- python--中英文混合字符串的切分(中文按字断开,英文按单词分开,数字按空格等特殊符号断开)
待切分句子: s = "12.China's Legend Holdings will split its several business arms to go public on sto ...
- php中文字符串转英文,php 字符串转数组 提取中文 提取英文 字符串类型
获取字符串类型/** * 判断中英文 */ public function checkStr($str){ $output = ''; ///\/i $a = preg_match('/[' . ch ...
- PHP判断字符串是纯英文、纯汉字或汉英混合
PHP判断字符串是否为中文(或英文)的方法,除了正则表达式判断和拆分字符判断字符的值是否小于128 外还有一种比较特别的方法. 使用php中的mb_strlen和strlen函数判断 方法比较简单:分 ...
- php判断字符串里有英文,PHP针对中英文混合字符串长度判断及截取方法示例
本文实例讲述了PHP针对中英文混合字符串长度判断及截取方法.分享给大家供大家参考,具体如下: /** * * 中英混合字符串长度判断 * @param unknown_type $str * @par ...
- ASP如何计算中英文混合字符串长度和截取字符串
用ASP做网站的时候经常会碰到要截取字符串的情况.ASP中的Len函数不管是中文字符,还是英文字符,统统按一个单位来计算,由于一个中文字符的宽度是一个英文字符宽度的两倍,在中英文混合的情况下字符串实际 ...
- python中英文字符和中文字符存储长度不同_Django如何正确截取中英混合字符串及表单中限制中文字符中长度...
中文字符和英文字符所占的字节长度是不一样,一个是2个字节,一个是1个字节,这给我们用英文的web框架开发中文app带来了麻烦.比如Django自带过滤器truncatewords并不支持截取中文,另外 ...
- java 统计汉字个数_Java简单统计字符串中汉字,英文字母及数字数量的方法
本文实例讲述了java简单统计字符串中汉字,英文字母及数字数量的方法.分享给大家供大家参考,具体如下: package org.zhy.demo.algorithm; /** * 有一个字符串,其中包 ...
- 字母数字混合提取数字C语言,如何将包含汉字,字母和数字的混合字符串转换为纯数字...
如何将包含汉字,字母和数字的混合字符串转换为纯数字? 假设有一个车牌号为字符串的字符串,字符串char * car_no =" Zhejiang B.123A8";如何将字符串转换 ...
最新文章
- 点击复制-表格选择数据
- WordCount程序
- 阿里云推出全球首个影像类应用一站式解决方案:智能云相册
- 国资委:九月份常州光伏出口大增 新兴市场增幅亮眼
- 关于Notes更改internet密码所需的缓存时间
- 边沿检测—以脉冲形式给出信号
- python测试代码怎么写_如何使用python做单元测试?
- 中国刹车片自动检测系统行业市场供需与战略研究报告
- jqGrid数据列表和表单的列隐藏/显示
- android 解析XML方式(二)
- 字符串、数组处理方法总结
- ESP8285调试 IOT_Demo
- Python读写Excel实现大量数据处理
- 前端性能优化(图片优化)
- HMAC-SHA1加密算法c++与java的实现
- 码农的2019又开始了,抓不住重点的我很悲催
- UE4 如何将材质Material保存为本地图片Png
- IT服务管理标准化解决方案实践
- Moo Volume
- Android列表小部件(Widget)开发详解
热门文章
- C++ unsigned
- aft-fuzz 小白安装 macOS
- 你需要知道的 15 个很棒的 CSS 动画库
- vr 软件linux,你在VR中使用Linux系统已不是梦想
- [Linux] Samba服务器配置 安全级别为share
- 网络环境ping丢包率测试
- 短信删了怎样找回信息
- mt管理器用sh文件双开应用(多开)
- Linux用户及权限管理,常用的工具命令find,wc,du,visudo,常用系统管理命令,Linux压缩管理,gzip,Bzip2,Tar
- 用java实现字符串的部分应用