C++的string字符串中同时含有汉字和英文字符时,由于汉字和英文字符所暂的字节长度不一样,
直接用substr(int begin,int end) 截取容易出现乱码,在网上找了个方法测试有效,现在记录一下:
1 //判断字符是否是中文2 int is_zh_ch(char p){3 if(~(p >> 8) == 0)4 {5 return 1;6 }7 return -1;8 }
1 string sub(string str,int start,int end){ 2 if(typeid(str)==typeid(string) && str.length()>0){ 3 int len=str.length(); 4 string tmp=""; 5 vectordump; 6 int i=0; 7 while(i 0?end:dump.size();19 if(start<0||start>end){20 printf("方法调用错误,第一个参数应该大于等于0且小于第二个参数!\n");21 }22 for(int i=start; i<=end; i++)23 {24 tmp+=dump[i-1];25 }26 return tmp;27 }28 else29 {30 printf("请输入字符串!\n");31 return "";32 }33 }
//函数的调用int main(){ string p="2017年04月01日10时48分19秒 基准测试_小白兔 _feeder1 test_sg_kg 大灰狼(后台补)"; cout< <
运行结果如下: