一个简单的stl中string的split函数
浏览:3218次 出处信息
在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只能查找字符,即使传入的参数是字符串,查找的也是字符。
建议继续学习:
- 关于使用STL的红黑树map还是hashmap的问题 (阅读:7824)
- 萃取(traits)编程技术的介绍和应用 (阅读:4902)
- String,StringBuffer,StringBuilder的区别 (阅读:2968)
- STL笔记之二叉查找树 (阅读:2892)
- 小趣闻:STL的三个版本 (阅读:2847)
- 关于在函数调用时传递string引用的必要性 (阅读:2781)
- Java将Object对象转换为String的总结合集 (阅读:2750)
- STL笔记之hashtable (阅读:2469)
- 倒置字符串中的单词 (阅读:2448)
- 闲谈STL容器之size()成员函数 (阅读:2321)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
文章信息
- 作者:Dante 来源: Vimer
- 标签: split stl string
- 发布时间:2010-10-21 08:51:16
建议继续学习
近3天十大热文
- [13] 谈谈Facebook的聊天系统架构
- [12] 手机客户端交互适配设计之我见
- [11] PDC 2010:C#与Visual Bas
- [10] 浅析韩国团购网站
- [10] 一句话crontab实现防ssh暴力破解
- [10] Oracle bbed工具的编译
- [10] 韩国实名制的破产
- [9] 长假,回忆小时候的家庭教育点滴
- [9] 强者生存论
- [9] 四年前的今天,我开始找工作