使用 sstream + getline
第一种,最简单常用的方法
#include <string>
#include <iostream>
#include <algorithm>
#include <sstream>
using namespace std;
int main(){
istringstream ss("heelleafewwweflliwee");
string str;
while(getline(ss,str,'a')){
cout<<str<<endl;
}
}
以上方法的局限性:只能以单个字符为单位分割
自己实现一个 split 函数
第二种,实现稍微复杂一些,但功能强大
#include <algorithm>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
std::vector<std::string> split(const std::string& s, const std::string& delim,
const bool keep_empty = true) {
using namespace std;
vector<string> result;
if (delim.empty()) {
result.push_back(s);
return result;
}
string::const_iterator substart = s.begin(), subend;
while (true) {
subend = search(substart, s.end(), delim.begin(), delim.end());
if (keep_empty || substart != subend) result.emplace_back(substart, subend);
if (subend == s.end()) break;
substart = subend + delim.size();
}
return result;
}
int main() {
using namespace std;
const vector<string> words =
split("So a close a no a matter a how a far", " a ");
copy(words.begin(), words.end(), ostream_iterator<string>(cout, "\n"));
}