在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; }
时间: 2024-10-31 20:36:32