Home C&C++函数库 c++ 语法 程序源码 Linux C库

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

🍄  另请参阅



strcspn 查找子字符串(function )
strpbrk 查找字符串中的字符(function)

联系我们 免责声明 关于CandCplus 网站地图