C++的字符串分割函数

字符串切割在日常开发中是会经常频繁使用的一种方法,在刷题的过程中也经常会遇到需要将输入用例按照“ ”切割后才能实现具体逻辑的情况,但遗憾的是C++STL中string类并没有为我们提供现成的切割函数,所以在在线OJ的过程中就需要自己来实现一个简单的字符串切割函数。
由于是为了在在线OJ中为我们的程序提供方便,所以代码逻辑以及代码量越简单越好,实现这样需求的方法不止一种,比如可以使用C语言提供strtok函数,但是在线OJ中大部分的预定义代码都是使用string类,所以再去使用C语言的strtok函数就显得有些麻烦,使用string类中的find+strsub组合的方式也可以完成我们想要的目的,但是代码量写起来还是比较大,这仍不是最快捷使用的方式,我为大家提供一种非常简单的字符串切割方式,只需要用到sstream这个类就可以完成,原理是相当简单,大家甚至可以将它作为一种定式的逻辑记忆下来,在使用起来时就非常方便了。

vector<string> Split(const string& str,const char& delim) {
    vector<string> ret;
    stringstream ss(str);
    string tmp;
    while(getline(ss,tmp,delim)){
        ret.push_back(tmp);
    }
    return ret;
}

调用上述的函数后被切割的各个部分就被存放在ret这个vector中,后续对这个vector中的内容操作即可。

点赞