天天看点

C/C++: 字符串拆分

将std::string类型的字符串拆分,如”a;b;c;d;e;f”,按”;”拆分,拆分后保存在vector中

1、方法:

void StringSplit(string s, char splitchar, vector<string>& vec)
{
    //保证vec是空的  
    if (vec.size() > ) {
        vec.clear();
        vec.swap(vec);
    }
    int length = s.length();
    printf("length = %d", length);
    int start = ;
    for (int i = ; i < length; i++)
    {
        //第一个就遇到分割符 
        if (s[i] == splitchar && i == )
        {
            start += ;
        }
        else if (s[i] == splitchar)
        {
            vec.push_back(s.substr(start, i - start));
            start = i + ;
        }
        //到达尾部  
        else if (i == length - )
        {
            vec.push_back(s.substr(start, i +  - start));
        }
    }

    for (unsigned int i = ; i < vec.size(); i++) {
        printf("%s", vec.at(i).c_str());
    }
}
           

2、使用方式

std::vector<std::string> vecString;
StringSplit("a;b;c;d;e;f", ';', vecString);
           

继续阅读