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

来源:互联网 发布:ug编程怎么加刀补 编辑:程序博客网 时间:2024/06/07 01:27

 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;}


运行结果为:


将空格换成其他模式稍作修改即可

0 0
原创粉丝点击