strtok
函数 <cstring>
char * strtok ( char * str, const char * delimiters );
将字符串分割为令牌
对该函数的调用将str分割为令牌,令牌是由delimiters的任意字符分隔的连续字符序列。
在第一次调用时,该函数以一个C字符串作为str的参数,
它的第一个字符是扫描令牌的起始位置。
在随后的调用中,该函数需要一个空指针,
并使用上一个令牌结束后的位置作为扫描的新开始位置。
为了确定标记的开始和结束,函数首先从开始位置扫描不包含在分隔符中的第一个字符
(它成为标记的开始)。
然后从标记的开头开始扫描分隔符中包含的第一个字符,该字符成为标记的结束。
如果找到终止空字符,扫描也会停止。
令牌的末尾自动被空字符替换,函数返回令牌的开头。
一旦在对strtok的调用中发现str的终止空字符,所有后续对该函数的调用
(使用一个空指针作为第一个参数)都会返回一个空指针。
找到最后一个令牌的点被函数保存在内部,以便在下一次调用中使用(为了避免数据竞争,
不需要特定的库实现)。
☲ 参数
str
要截断的C字符串。
注意,这个字符串被分解成更小的字符串(令牌tokens)。
或者,可以指定一个空指针,在这种情况下,函数继续扫描之前成功调用函数的地方。
delimiters
包含分隔符字符的C字符串。
这些可能因调用的不同而不同.
☉ 返回值
如果找到一个令牌,则指向该令牌开头的指针。
否则,为空指针。
当扫描到字符串的末尾(即null字符)时,总是返回一个空指针。
☣ 示例
/* strtok example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}
|
输出:
Splitting string "- This, a sample string." into tokens:
This
a
sample
string
🍄 另请参阅