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:纯粹个人使用,没有经过严格测试,也许还有一些考虑不周的地方,欢迎大家指出。
posted @ 2010-05-05 18:08  vieri122  阅读(10508)  评论(4编辑  收藏  举报