分享

c++实现split函数

 桔梗花好月圆 2011-01-12
今天工作因原因,需要实现一个split的功能,以前也做过,但一直没有把他记下来,所以又重新写了一次。这次做个笔记以备后用,各位网友感兴趣也可以直接拿来用过。
例子:
一个这样的字符串:“123,456,789,0”。把他截取成这样的字符串数组 [123],[456],[789],[0]。众所周知c++默认没有提供这样功能的函数,下面我们自己来实现它
不多说直接上代码:
#include <iostream>  
#include <string>  
#include <vector> 
#include <TCHAR.H>
using namespace std;  
vector<string> splitEx(const string& src, string separate_character)  
{  
     vector<string> strs;  
         int separate_characterLen = separate_character.size();//分割字符串的长度,这样就可以支持如“,,”多字符串的分隔符  
         int lastPosition = 0,index = -1;  
         while (-1 != (index = src.find(separate_character,lastPosition)))  
      {  
          strs.push_back(src.substr(lastPosition,index - lastPosition));  
         lastPosition = index + separate_characterLen;  
      }  
     string lastString = src.substr(lastPosition);//截取最后一个分隔符后的内容  
         if (!lastString.empty())  
         strs.push_back(lastString);//如果最后一个分隔符后还有内容就入队  
         return strs;  
}  
int _tmain(int argc, _TCHAR* argv[])  
{  
   // string s = "$ T3,E797.7,Ta16.8,Tc17.9,L7*";  
    string s = "123,456,789,0,888";
    string del = ",";    
    vector<string> strs = splitEx(s, del);    
 for ( unsigned int i = 0; i < strs.size(); i++)    
 {    
  cout << strs[i].c_str() << endl;  
 }    
    return 0;    

输出:
123
456
789
0
888

PS:纯粹个人使用,没有经过严格测试,也许还有一些考虑不周的地方,欢迎大家指出。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多