split函数与strtok函数的实现

时间:2020-11-27 17:03:00
#if 0
//..................split()函数
/*vector<string>split(const string &s,const string &seperator);*/
/*输入一个字符串,一个分隔符字符串(可包含多个分隔符,返回一个字符串向量*/

vector<string>split(const string &s,const string &seperator)
{
vector<string>result;
int seplen = seperator.size();//计算分割字符串的长度
int pos = 0;
int index = -1;
/*size_t find(const string &str,size_t pos);
从string 的pos位置寻找,str是要寻找的字符串
函数返回字符串第一次出现的位置 */

while(-1 !=(index = s.find(seperator,pos)))
{
/*substr(size_type_Off,size_type_Count = npos)const;
复制子字符串,从指定位置开始,有指定的长度
_Off:begin pos _Count :所复制的字符数目*/

result.push_back(s.substr(pos,index-pos));
pos = index+seplen;

}
string laststring = s.substr(pos); //最后一个分隔符后面的内容
if(!laststring.empty())
result.push_back(laststring);
return result;
}
int main()
{
string s = "qq,sd,adscc,sdefde,sadse,adsdece";
string sep = ",";
// string s = "aaa,*bbed,*swq,*dfsdsd,*sqwsxx,*cc,*saas";
// string sep = ",*";
vector<string>v = split(s,sep);
for(vector<string>::size_type i = 0;i!=v.size();++i)
cout<<v[i]<<" ";
cout<<endl;

}

#endif
//...............strtok()函数
#if 0
/*char *strtok(char *str,const char *delim);*/
int main()
{
char buf[] = "hello-I-am-a-girl*I-like*listen-music";
char *sep = "-*"; //可以按多个字符分割
char *temp = strtok(buf,sep);
while(temp)
{
printf("%s ",temp);
temp = strtok(NULL,sep);
}
printf("\n");
return 0;
}
#endif