在c++中,沒有java與python中定義的split()功能的函數,於是自己實現之。
情況1,適用范圍,分隔符為字符。思路,記錄分隔符的位置,判斷需要截取的字符串的下標范圍。
vector<string> split(string s,char ch){ int start=0; int len=0; vector<string> ret; for(int i=0;i<s.length();i++){ if(s[i]==ch){ ret.push_back(s.substr(start,len)); start=i+1; len=0; } else{ len++; } } if(start<s.length()) ret.push_back(s.substr(start,len)); return ret; }
情況2,使用范圍,分隔符為字符串。思路,記錄分隔字符串的起始位置,判斷需要截取的字符串的下標范圍。
vector<string> split(string s,string seprate){ vector<string> ret; int seprate_len=seprate.length(); int start=0; int index; while((index = s.find(seprate,start))!=-1){ ret.push_back(s.substr(start,index-start)); start = index+seprate_len; } if(start<s.length()) ret.push_back(s.substr(start,s.length()-start)); return ret; }
