技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 算法 --> 一个简单的stl中string的split函数

一个简单的stl中string的split函数

浏览:3265次  出处信息

在python,c#等语言中,string都是默认提供split这个函数的,C++里面却没有默认实现,但又经常会用到,所以就简单实现了一个:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int SplitString(const string &srcStr,const string &splitStr,vector<string> &destVec)
{
    if(srcStr.size()==0)
    {   
        return 0;
    }   
    size_t oldPos,newPos;
    oldPos=0;
    newPos=0;
    string tempData;
    while(1)
    {   
        newPos=srcStr.find(splitStr,oldPos);
        if(newPos!=string::npos)
        {   
            tempData = srcStr.substr(oldPos,newPos-oldPos);
            destVec.push_back(tempData);
            oldPos=newPos+splitStr.size();
        }   
        else if(oldPos<=srcStr.size())
        {   
            tempData= srcStr.substr(oldPos);
            destVec.push_back(tempData);
            break;
        }   
        else
        {   
            break;
        }   
    }   
    return 0;
}

简单使用代码如下:

1
2
3
4
5
6
7
8
9
string src = ",,w,,ai,,,nio,,";
string splitStr = ",,";
vector<string> destVec;
 
SplitString(src,splitStr,destVec);
for(vector<string>::iterator it = destVec.begin();it!=destVec.end();++it)
{
    cout<<*it<<endl;
}

输出为:

 
w
ai
,nio

当然,一般split我们还是使用字符分割比较多。
另外也说一个问题,stl里面string的find和rfind方法是可以查找字符串的,但是find_last_of和find_first_of只能查找字符,即使传入的参数是字符串,查找的也是字符。

建议继续学习:

  1. 关于使用STL的红黑树map还是hashmap的问题    (阅读:7941)
  2. 萃取(traits)编程技术的介绍和应用    (阅读:5034)
  3. STL笔记之二叉查找树    (阅读:3061)
  4. String,StringBuffer,StringBuilder的区别    (阅读:3015)
  5. Java将Object对象转换为String的总结合集    (阅读:2936)
  6. 小趣闻:STL的三个版本    (阅读:2876)
  7. 关于在函数调用时传递string引用的必要性    (阅读:2845)
  8. STL笔记之hashtable    (阅读:2637)
  9. 倒置字符串中的单词    (阅读:2473)
  10. 闲谈STL容器之size()成员函数    (阅读:2366)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1