国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

c++截取漢字和英文混合字符串代碼實例

2020-01-26 13:28:35
字體:
來源:轉載
供稿:網(wǎng)友

在C++里截取字符串可以使用string.substr(),可是這個函數(shù)只能按英文來截取,

如果是漢字可能就要計算好字符個數(shù),如果是漢字和英文混合,那就只能望洋興嘆了。

可是恰好我需要這樣一個函數(shù),于是就自己實現(xiàn)了一個,其中如何判斷漢字和英文

參看了此處

代碼簡單也無優(yōu)化,若有更好的方法歡迎提出,代碼如下。

#include <iostream>#include <string>#include<cstdio>#include<vector>#include<typeinfo>using namespace std;int is_zh_ch(char p){  /*漢字的兩個字節(jié)的最高為都為1,這里采用判斷最高位的方法  將p字節(jié)進行移位運算,右移8位,這樣,如果移位后是0,  則說明原來的字節(jié)最高位為0,不是1那么也就不是漢字的一個字節(jié)  */  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++截取漢字英文混合字符串詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 喀喇| 台东市| 堆龙德庆县| 穆棱市| 铜山县| 吴桥县| 巴塘县| 麦盖提县| 龙岩市| 洞口县| 开平市| 东山县| 兰州市| 高青县| 鸡泽县| 沈丘县| 清苑县| 陆河县| 新竹市| 广西| 罗源县| 天水市| 马尔康县| 新平| 应用必备| 宜宾县| 仁怀市| 唐河县| 天长市| 南汇区| 南涧| 定南县| 和林格尔县| 宜宾市| 西乌珠穆沁旗| 汽车| 三门峡市| 陆丰市| 汤原县| 宁波市| 虎林市|