C++ 关于字符串分割函数split封装

  • Post author:
  • Post category:其他


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

在这里插入图片描述



版权声明:本文为qq_44647223原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。