IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

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

Vimer 2010-10-21 08:51:16 累计浏览 4,377 次
本机暂存

在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. 对基本有序的序列排序算法 (2026-06-11 17:46:49)
  2. Four Levels Of Customer Understanding (2026-05-22 21:00:00)
  3. 除法的意义 (2026-04-12 20:52:17)

查看更多 算法 文章 →

建议继续学习

  1. 如何学好C++语言 (累计阅读 10,447)
  2. Emacs配置C/C++-mode的代码智能提示和自动补全 (累计阅读 10,411)
  3. colortail,让 tail 命令绚丽起来 (累计阅读 10,258)
  4. 在C++中实现foreach循环,比for_each更简洁! (累计阅读 9,497)
  5. 几个内存相关面试题(c/c++) (累计阅读 9,443)
  6. 关于使用STL的红黑树map还是hashmap的问题 (累计阅读 8,875)
  7. 浅析C++多线程内存模型 (累计阅读 8,801)
  8. C++ 多线程编程总结 (累计阅读 8,096)
  9. 使用gdb调试运行时的程序小技巧 (累计阅读 7,205)
  10. 在C++里写一个不能被继承的类 (累计阅读 6,579)