一个简单的stl中string的split函数
浏览:4082次 出处信息
在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的问题 (阅读:8630)
- 萃取(traits)编程技术的介绍和应用 (阅读:6176)
- STL笔记之二叉查找树 (阅读:3867)
- String,StringBuffer,StringBuilder的区别 (阅读:3812)
- Java将Object对象转换为String的总结合集 (阅读:3509)
- 小趣闻:STL的三个版本 (阅读:3696)
- 关于在函数调用时传递string引用的必要性 (阅读:3720)
- STL笔记之hashtable (阅读:3275)
- 倒置字符串中的单词 (阅读:3372)
- 关于在“写时拷贝”发生的情况下直接操作string中内容出现的问题 (阅读:3148)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
文章信息
- 作者:Dante 来源: Vimer
- 标签: split stl string
- 发布时间:2010-10-21 08:51:16
建议继续学习
近3天十大热文
-
[1182] WordPress插件开发 -- 在插件使用 -
[74] 解决 nginx 反向代理网页首尾出现神秘字 -
[43] web开发设计人员不可不用的在线web工具和 -
[38] Java开发岗位面试题归类汇总 -
[31] 一句话crontab实现防ssh暴力破解 -
[31] Rax 系列教程(长列表) -
[30] 手机产品设计方向 -
[27] 程序员疫苗:代码注入 -
[27] 如何建立合适的索引? -
[26] oracle技术方面的路线
