注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

逍遥子 曰:

得失失得 何必患得患失 舍得得舍 不妨不舍不得

 
 
 

日志

 
 

c++提取子串[原]  

2012-10-23 17:19:07|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
下面的函数GetSub可以从源字符串srcStr中获取所有以begPtn开始且以endPtn结束的子串,并将所获取的子串保存到vector里,例如
可以从字符串"sadfasdfsf#sdaf989789$#asdfasf894325445$#456123asdf$"中获取以“#”开头,以“$”结束的所有子串。

#include <iostream>
#include <string.h>
#include <vector>
using namespace std;

/*
 get all substrings which start with 'begPth' and end with 'endPtn' (but not include 'endPtn')
 from string srcStr,all of these substings will be stored in vector and then returned

*/
vector<string> GetSub(string srcStr,string begPtn,string endPtn)
{
    vector<string> result;
    if(srcStr.empty())
        return result;        
 
    string::size_type iSrcLen = 0;
    iSrcLen = srcStr.size();
    string::size_type iBegPos = 0, iEndPos = 0;
    while(iBegPos <= iSrcLen)
    {
        //从上个子串的结束位置开始查找下个字串的起始位置
        iBegPos = srcStr.find(begPtn,iEndPos);
        if(iSrcLen <= iBegPos)
            break;
        //从子串的起始位置开始查找其结束位置
        iEndPos = srcStr.find(endPtn,iBegPos+1);
        if(iEndPos < iBegPos)
            break;
        string subStr = srcStr.substr(iBegPos+1,iEndPos-iBegPos-1);
        result.push_back(subStr);
    }
    return result;
}

int main()
{
    string srcStr = "sadfasdfsf#sdaf989789$#asdfasf894325445$#456123asdf$";
    string begPtn = "#";
    string endPtn = "#";
    vector<string> strlist = GetSub(srcStr,begPtn,endPtn);
    vector<string>::iterator iter_beg = strlist.begin();
    vector<string>::iterator iter_end = strlist.end();
    cout<<"srcStr = "<<srcStr.c_str()<<endl;
    cout<<"begPtn = "<<begPtn.c_str()<<" ; endPtn = "<<endPtn.c_str()<<endl;
    cout<<"begin out put:"<<endl;
    while(iter_beg < iter_end)
    {
        cout<<(*iter_beg).c_str()<<endl;
        iter_beg++;
    }
    char cStop;
    cout<<"stop...."<<endl;
    cin>>cStop;

    return 0;
}
  评论这张
 
阅读(555)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018