Bootstrap

c++ 字符串分割成数组

#include<iostream>  
#include<string>  
#include<vector>  


using namespace std;  


//splitString函数的参数说明:  
//返回值是分割后字符串数组大小  
//strSrc 原始字符串  
//strDelims 自定义的分割字符串的分割数组  
//strDest 分割后的字符串数组,引用传递  


int  splitString(const string & strSrc, const std::string& strDelims, vector<string>& strDest)  
{  
typedef std::string::size_type ST;  
string delims = strDelims;  
std::string STR;  
if(delims.empty()) delims = "/n/r";  


ST pos=0, LEN = strSrc.size();  
while(pos < LEN ){  
STR="";   
while( (delims.find(strSrc[pos]) != std::string::npos) && (pos < LEN) ) ++pos;  
if(pos==LEN) return strDest.size();  
while( (delims.find(strSrc[pos]) == std::string::npos) && (pos < LEN) ) STR += strSrc[pos++];  
//std::cout << "[" << STR << "]";  
if( ! STR.empty() ) strDest.push_back(STR);  
}  
return strDest.size();  
}  


int main()  
{  
string testStr = "提供关于_开发业 界,软件业界,-移动业界,云计算业界的权威报道,为业界产 品经理,业界开发 者,";  
string delims = ",- _ ,,"; //定义分割数组,可以定义多个分隔符,如" ,./r"等  
vector<string> splitStrs; //把分割后的字符串存在vector里面  
splitString(testStr,delims, splitStrs); //调用自定义的分割函数  


//显示分割后的字符串数组(用vector存储)  
vector<string>::iterator iter;  
for (iter = splitStrs.begin(); iter != splitStrs.end(); ++iter) {  
cout << "|" << *iter << "|/n";  
}  


splitStrs.clear();  
;