一个简单的stl中string的split函数
浏览:3202次 出处信息
在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的问题 (阅读:7807)
- 萃取(traits)编程技术的介绍和应用 (阅读:4890)
- String,StringBuffer,StringBuilder的区别 (阅读:2953)
- STL笔记之二叉查找树 (阅读:2878)
- 小趣闻:STL的三个版本 (阅读:2829)
- 关于在函数调用时传递string引用的必要性 (阅读:2768)
- Java将Object对象转换为String的总结合集 (阅读:2737)
- STL笔记之hashtable (阅读:2457)
- 倒置字符串中的单词 (阅读:2434)
- 闲谈STL容器之size()成员函数 (阅读:2314)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
文章信息
- 作者:Dante 来源: Vimer
- 标签: split stl string
- 发布时间:2010-10-21 08:51:16
建议继续学习
近3天十大热文
- [452] Go Reflect 性能
- [13] [译]Google Chrome中的高性能网
- [12] 精于图片处理的10款jQuery插件
- [11] Mac下.apk的反编译
- [11] Linux Used内存到底哪里去了?
- [10] vim入门,进阶与折腾
- [10] webapp网页调试工具Chrome Dev
- [10] Linux常用系统信息查看命令
- [10] rsync同步的艺术
- [10] 个人开公司的流程,以后用得着