C++字符串分割

最近在研究C++,遇到一个问题需要将类似如下的字符串分割开:
17;"_testCube##e17##13##Small";17;2;0;0;1;0;;;;

  • 第一种方法:采用C++自带的方法strtok()进行分割,代码如下:
//参数我不喜欢用指针和引用这样会改变原内存空间
vector split(string res,const char reg) 
{
    vector v_value;
    char* pstr = strtok(const_cast(res.c_str()),®);
    while(pstr)
    {
        v_value.push_back(pstr);
        pstr = strtok(NULL,®);
    }
    return v_value;
}

这样的方法有个缺陷,就是我们看到字符串后面有多个分号,按照需求应该分割11参数,可是strtok()分割两个分号返回的是空指针,所以需要我们对此进行改进,留在我后续完善吧,下面介绍第二种方法。

  • 第二种方法:
    使用了size_type find( CharT ch, size_type pos = 0 );方法
vector split(string res,const char reg)
{
    vector v;
    signed int start;
    signed int end = res.find(reg,0);
    v.push_back(res.substr(0,end));
    start = end+1;
    while ((end = res.find(reg,start))>0)
    {
        v.push_back(res.substr(start,end-start));
        start = end+1;
    }
    return v;
}

你可能感兴趣的:(C++字符串分割)