#include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; void StringSplit(const string& str,vector<string>& vStr,const char& division) { int startPos = 0; int endPos = string::npos; startPos = str.find_first_not_of(division); while(startPos != string::npos) { endPos = str.find_first_of(division,startPos); if(endPos != string::npos) { string strSplit = str.substr(startPos,(endPos-startPos)); vStr.push_back(strSplit); }else { string strSplit = str.substr(startPos); vStr.push_back(strSplit); } startPos = str.find_first_not_of(division,endPos ); } return; } void PrintElement(const string& str) { cout << str << endl; } int _tmain(int argc, _TCHAR* argv[]) { string str1 = "_1_dfg45d#$__123456789_1_dfg45d#$__123456789_1_dfg45d#$__123456789_1_dfg45d#$__123456789_1_dfg45d#$__123456789"; string str2 = "__sdfsf_dfg45d#$__张三李四____sdfsf_dfg45d#$__张三李四____sdfsf_dfg45d#$__张三李四____sdfsf_dfg45d#$__张三李四__"; string str3 = "(*^(*^(*_dfg45d#$__天天向上__(*^(*^(*_dfg45d#$__天天向上__(*^(*^(*_dfg45d#$__天天向上__(*^(*^(*_dfg45d#$__天天向上__"; vector<string> vStr; StringSplit(str1,vStr,'_'); for_each(vStr.begin(),vStr.end(),PrintElement); cout << endl; vStr.clear(); StringSplit(str2,vStr,'_'); for_each(vStr.begin(),vStr.end(),PrintElement); cout << endl; vStr.clear(); StringSplit(str3,vStr,'_'); for_each(vStr.begin(),vStr.end(),PrintElement); cout << endl; vStr.clear(); return 0; }