函数
<cwchar>

wcstok

wchar_t* wcstok (wchar_t* wcs, const wchar_t* delimiters, wchar_t** p);
将宽字符串分割为标记
连续调用此函数会将 wcs 分割成标记,这些标记是由 delimiters 中的任意宽字符分隔的连续宽字符序列。

首次调用时,该函数期望一个 C 宽字符串作为 wcs 参数,其第一个字符将用作扫描标记的起始位置。在后续调用中,该函数期望一个空指针,并使用前一个标记结束后的位置作为新的扫描起始位置。

这是 strtok ( <cstdlib> ) 的宽字符等效函数,其操作方式类似(有关更多详细信息,请参见 strtok ),但请注意,与 strtok 不同,此函数需要一个额外的参数来存储分词过程的状态。

参数

wcs
要截断的 C 宽字符串。
请注意,此字符串的内容将被修改并分割成更小的字符串(标记)。
或者,可以指定一个空指针,在这种情况下,函数将继续扫描前一次成功调用函数结束的位置。这要求第三个参数 (p) 与该前一次调用中的参数相同。
delimiters
包含分隔符宽字符的 C 宽字符串。
这些字符可能在不同调用之间有所不同。
p
指向一个wchar_t指针。该函数使用它来存储类型为wchar_t*的值,其中包含当前分词序列的状态。在后续调用此函数时,必须传入相同的指针才能对宽字符串的其余部分进行分词。

返回值

指向在宽字符串中找到的最后一个标记的指针。
如果没有更多要检索的标记,则返回空指针。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* wcstok example */
#include <wchar.h>

int main ()
{
  wchar_t wcs[] = L"- This, a sample string.";
  wchar_t * pwc;
  wchar_t * pt;
  wprintf (L"Splitting wide string \"%ls\" into tokens:\n",wcs);
  pwc = wcstok (wcs, L" ,.-", &pt);
  while (pwc != NULL)
  {
    wprintf (L"%ls\n",pwc);
    pwc = wcstok (NULL, L" ,.-", &pt);
  }
  return 0;
}

输出

Splitting wide string "- This, a sample string." into tokens:
This
a
sample
string



另请参见。