java中String中有个split函数,可以将字符串按照给定的模式分段,返回一个字符串数组,c++标准库中没有这样的函数,于是动手利用string中的find和substr函数实现这样一个功能,直接贴代码:
<pre name="code" class="cpp">#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <algorithm>
using namespace std;
void print(string str)
{
cout<<str<<endl;
}
vector<string> pattern_seg(const string str,const string pattern)
{
string::size_type pos;
vector<string> vec;
string buf(str);
buf += pattern;
int size = buf.size();
for(int i=0;i<size;i++)
{
pos = buf.find(pattern,i);
if(pos<size)
{
string s= buf.substr(i,pos-i);
vec.push_back(s);
i = pos+pattern.size()-1;
}
}
return vec;
}
int main()
{
string pattern(" ");
string buf("aa bb cc dd ee");
vector<string> strvec(pattern_seg(buf,pattern));
for_each(strvec.begin(),strvec.end(),print);
return 0;
}
运行结果为:
将空格换成其他模式稍作修改即可