您的位置:首页 > 其它

strtok分割函数

2020-05-14 11:37 30 查看
#include<bits/stdc++.h>
using namespace std;
char str[] = "you-r-a";
char *temp;
char reg[] = "-";
int main(){
temp = strtok(str,reg);
while(temp){
puts(temp);
temp = strtok(NULL,reg);
}
}

这个函数的用途是把一个字符串按照seps中指定的符号进行分割,就如同perl中的split()函数。但是,为什么strtok(NULL,seps)中的第一个参数是NULL呢?太奇怪了。

查了查资料,发现玄机在这里:这个函数strtok(OriginalString,Seps)涉及到两个指针。

第一个指针pointer_a用来指向函数返回的字符串,这个字符串是被原字符串OriginalString被seps中的字符截断后的第一个字符串。

第二个指针pointer_b用来指向OriginalString中,匹配截断字串seps的位置。

这样,在循环体之内进行第二次函数调用时只要把strtok()的第一个参数设置为NULL,就可以直接从pointer_b位置开始进行查找匹配了。
可以理解为NULL让strtok继续向后匹配

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: