第一种,较为全能的实现方式, strtok 实现,其中也借助了 strcpy 所以要包含头文件 <cstring> ,代码如下
vector<string> split(string& str, string& delim){
vector<string> arr;
// strtok 实现
if(str == "") return arr;
char* strs = new char[str.length() + 1];
strcpy(strs, str.c_str());
char* delims = new char[delim.length() + 1];
strcpy(delims, delim.c_str());
char *p = strtok(strs, delims);
while(p) {
arr.push_back(p);
p = strtok(NULL, delims);
}
return arr;
}
其中,str 为字符串,delim 为分隔符字符串,可以为多个分隔符。
具体思路: 通过 strcpy 函数把 string 转换为 char* ,然后调用 strtok 函数,strtok 函数原型为
char *strtok(char s[], const char *delim);
具体含义为 strtok() 用来将字符串分割成一个个片段。参数 s 指向欲分割的字符串,参数 delim 则为分割字符串中包含的所有字符。当 strtok() 在参数 s 的字符串中发现参数 delim 中包含的分割字符时,则会将该字符改为 \0 字符。在第一次调用时,strtok() 必需给予参数 s 字符串,往后的调用则将参数 s 设置成 NUL