您的位置:首页 > 编程语言 > C语言/C++

c++中实现将字符串按模式分段

2015-11-11 18:50 471 查看
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;
}




运行结果为:

将空格换成其他模式稍作修改即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: