#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(); }