一个简单的stl中string的split函数
浏览:3318次 出处信息
在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的问题 (阅读:8062)
- 萃取(traits)编程技术的介绍和应用 (阅读:5165)
- STL笔记之二叉查找树 (阅读:3216)
- String,StringBuffer,StringBuilder的区别 (阅读:3080)
- Java将Object对象转换为String的总结合集 (阅读:3123)
- 小趣闻:STL的三个版本 (阅读:2919)
- 关于在函数调用时传递string引用的必要性 (阅读:2920)
- STL笔记之hashtable (阅读:2794)
- 倒置字符串中的单词 (阅读:2534)
- 闲谈STL容器之size()成员函数 (阅读:2437)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
文章信息
- 作者:Dante 来源: Vimer
- 标签: split stl string
- 发布时间:2010-10-21 08:51:16
建议继续学习
近3天十大热文
-
[55] 转载:cassandra读写性能原理分析
-
[54] memory prefetch浅析
-
[46] MySQL半同步存在的问题
-
[42] 深入浅出cassandra 4 数据一致性问
-
[42] 《web前端最佳实践》—高维护性css
-
[41] javascript插入样式
-
[39] 获取Dom元素的X/Y坐标
-
[37] 不是书评 :《我是一只IT小小鸟》
-
[37] MySQL vs NoSQL 效率与成本之争
-
[33] 程序员技术练级攻略