
来自: 百度百科
原型char * strtok(char * s,const char * delim);
功能
将一个字符串解析为一组字符串. s是要分解的字符串c++ strchr函数,delim是定界符字符串.
说明
strtok()用于将字符串拆分为片段. 参数s指向要分割的字符串,参数delim是分割的字符串. 当strtok()在参数s的字符串中找到参数delim的分割字符时,它将把该字符更改为\ 0字符. 在第一次调用时,必须给strtok()提供参数s的字符串,随后的调用将参数s设置为NULL. 每次调用成功,都会返回指向该段的指针.
返回值
从s开头的分隔字符串. 没有分割字符串时返回NULL.
delim中包含的所有字符都将被滤除,滤除的位置将是一个分割节点.

在C和C ++语言中使用strtok函数
strtok函数将破坏已分解字符串的完整性. 调用前后的s是不同的. 如果要保持原始字符串不变,可以结合使用strchr和sscanf.
c
#include
#include
int主(无效)
{
字符输入[16] =“ abc,d”;
char * p;

/ ** / / * strtok在标记之前放置一个NULL终止符(如果找到)* /
p = strtok(输入,“,”);
如果(p)printf(“%s \ n”,p);
/ ** / / *第二次使用NULL作为第一个参数的strtok调用返回指向令牌后面字符的指针* /
p = strtok(NULL,“c++ strchr函数,”);
如果(p)printf(“%s \ n”,p);
返回0;
}
c ++

#include
#include
使用命名空间标准;
int main()
{
char句子[] =“这是一个具有7个标记的句子”;
cout <<“要标记的字符串是: \ n” <<句子<<“ \ n \ n标记是: \ n \ n”;
char * tokenPtr = strtok(句子,“”);
同时(tokenPtr!= NULL)

{
cout << tokenPtr <<'\ n';
tokenPtr = strtok(NULL,“”);
}
cout <<“在strtok之后,句子=” << tokenPtr << endl;
返回0;
}
对该函数的第一次调用需要两个参数. 第一次拆分的结果返回字符串中第一个','之前的字符串,这是上述程序第一次输出abc. 第二次调用函数strtok(NULL,“,”),第一个参数设置为NULL. 根据以下字符串返回结果,该字符串是第二个输出d. strtok是线程不安全的函数,因为它使用静态分配的空间来存储分段字符串的位置. 线程安全功能称为strtok_r. 使用strtok确定IP或MAC时,必须首先使用其他方法. 的数量 '. '或': ',因为使用strtok截断,例如: “ 192..168.0 ... 8 ...”此字符串,trtok仅会拦截四次,中间...不管多少,都将被视为键
其他相关信息
以下描述摘自最新的Linux内核2.6.29,它表明该功能已不再使用,并被更快的strsep()取代
/ *
* Linux / lib / string.c
*
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-157234-1.html
又没说要大力推广