C++ 關於字串分割函式split封裝
阿新 • • 發佈:2021-02-14
技術標籤:C++
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
vector<string> split(string T, string P){
vector<string> arr;
if(T=="")return arr;
unsigned point1 = 0, point2 = 0;
if(P==""||T.find(P, point1)==string::npos){//不分割或者原字串找不到分割符
arr.push_back(T);
return arr;
}
while((point1=T.find(P,point1))!=string::npos){
if(point1==point2)arr.push_back("");
else arr.push_back(T.substr(point2,point1-point2));
point2 = point1+P.length();//跳過匹配串P
point1 += P.length();
}
if(point2<= T.length()-1)arr.push_back(T.substr(point2, T.length()-point2));
return arr;
}
int main(int argc, char const *argv[])
{
vector<string> arr = split(",1,,2,,,,333", ",,");
cout<<"arr.size = "<<arr.size()<<endl;
for(size_t i=0; i<arr.size(); i++ ){
if(arr[i]=="")cout<<"_ ";//代表為空
else cout<<arr[i]<<" ";
}
cout<<endl;
return 0;
}