c++实现split函数

今天工作因原因,需要实现一个split的功能,以前也做过,但一直没有把他记下来,所以又重新写了一次。这次做个笔记以备后用,各位网友感兴趣也可以直接拿来用过。

例子: 

一个这样的字符串:“123,456,789,0”。把他截取成这样的字符串数组 [123],[456],[789],[0]。众所周知c++默认没有提供这样功能的函数,下面我们自己来实现它

不多说直接上代码:

 

 代码

#include  < iostream >
#include 
< string >
#include 
< vector >
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  =   " 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 

888 

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

你可能感兴趣的:(split)