一个简单的stl中string的split函数
浏览:3277次 出处信息
在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的问题 (阅读:7984)
- 萃取(traits)编程技术的介绍和应用 (阅读:5078)
- STL笔记之二叉查找树 (阅读:3115)
- String,StringBuffer,StringBuilder的区别 (阅读:3026)
- Java将Object对象转换为String的总结合集 (阅读:3022)
- 小趣闻:STL的三个版本 (阅读:2884)
- 关于在函数调用时传递string引用的必要性 (阅读:2857)
- STL笔记之hashtable (阅读:2699)
- 倒置字符串中的单词 (阅读:2488)
- 闲谈STL容器之size()成员函数 (阅读:2376)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
文章信息
- 作者:Dante 来源: Vimer
- 标签: split stl string
- 发布时间:2010-10-21 08:51:16
建议继续学习
近3天十大热文
- [69] Twitter/微博客的学习摘要
- [67] IOS安全–浅谈关于IOS加固的几种方法
- [66] 如何拿下简短的域名
- [65] android 开发入门
- [63] find命令的一点注意事项
- [62] Go Reflect 性能
- [61] 流程管理与用户研究
- [60] Oracle MTS模式下 进程地址与会话信
- [59] 图书馆的世界纪录
- [57] 读书笔记-壹百度:百度十年千倍的29条法则