• C++ 字符串的分割函数split 及 用法【转载】


    文章出处https://blog.csdn.net/glmushroom/article/details/80690881

    之前在C#中总用到字符串的分割,使用系统函数即可,比如:

    string a = "This is a test";

    string[] strArray = a.Split(' ');

    在C++中string没有直接的分割函数,可以利用C的stroke函数封装一个分割方法:

     1 vector<string> split(const string& str, const string& delim) {  
     2     vector<string> res;  
     3     if("" == str) return res;  
     4     //先将要切割的字符串从string类型转换为char*类型  
     5     char * strs = new char[str.length() + 1] ; //不要忘了  
     6     strcpy(strs, str.c_str());   
     7  
     8     char * d = new char[delim.length() + 1];  
     9     strcpy(d, delim.c_str());  
    10  
    11     char *p = strtok(strs, d);  
    12     while(p) {  
    13         string s = p; //分割得到的字符串转换为string类型  
    14         res.push_back(s); //存入结果数组  
    15         p = strtok(NULL, d);  
    16     }  
    17  
    18     return res;  
    19 } 

    要利用分割函数时调用如下:

    原string是其他C#项目的数据传输string

     1     string str1 = "M135buffer.buffer,|M135data.data1,4.22424|M135data.data6,-0.0714111|M135data.data7,-0.53833|M135data.data11,145.569|M135data.data16,5.0354|M135data.data17,-112.906|M135data.data21,4.34509|M135data.data22,-0.115356|M135data.data23,0|M135data.data24,-14|M135data.data25,49521|M135data.data_lng,0|M135data.data26,-14|M135data.data27,49521|M135data.data_lati,0";
     2     string str2 = "|This is a test!
    ";
     3  
     4     string str = str1+str2;
     5     
     6     printf(str.c_str());
     7     
     8     vector<string> AllStr = split(str,"|");
     9     for (int i=0; i<AllStr.size();i++)
    10     {
    11         vector<string> tempStr = split(AllStr[i],",");
    12         if(tempStr.size()>=2)
    13         {
    14             printf("Name:%s  Value:%s
    ",tempStr[0].c_str(),tempStr[1].c_str());
    15         }
    16     }

    运行结果如下:

    注意:

    此split分割函数的第二个参数可以不只传一个char,可以传一个短string,但是函数会按照string中的每个char进行分割,

    类似C#的分割函数的传多个参数str.Split('|',',');

    所以:这个分割函数只能按单个char或者多个单独的char来分割,而不能按一个短string直接分割。
    ————————————————
    版权声明:本文为CSDN博主「glmushroom」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/glmushroom/article/details/80690881

  • 相关阅读:
    JavaScript一个页面中有多个audio标签,其中一个播放结束后自动播放下一个,audio连续播放
    JavaScript多个音频audio标签或者多个视频video,点击其中一个播放时,其他的停止播放
    JavaScript多个h5播放器video,点击一个播放其他暂停
    jQuery表单2
    CSS3-渐变这个属性2
    微信小程序——扫码后提示“打开失败缺少ID”
    js隐藏button
    js 跳转链接的几种方式
    使用onclick报SyntaxError: identifier starts immediately after numeric literal
    jsp中获取attribute
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/11785216.html
Copyright © 2020-2023  润新知