C++官网参考链接:https://cplusplus.com/reference/cwchar/wcstok/
函数
wcstok
wchar_t* wcstok (wchar_t* wcs, const wchar_t* delimiters, wchar_t** p);
将宽字符串拆分为标记
对该函数的一系列调用将wcs拆分为标记,标记是由作为delimiters的一部分的任意宽字符分隔的连续宽字符序列。
在第一次调用时,该函数期望一个C宽字符串作为wcs的实参,它的第一个字符用作扫描标记的起始位置。在随后的调用中,该函数期望一个空指针,并使用最后一个标记结束后的位置作为新的扫描起始位置。
这是strtok(
形参
wcs
要截断的C宽字符串。
注意,此字符串的内容被修改并分解为更小的字符串(标记)。
或者,可以指定空指针,在这种情况下,函数继续扫描之前成功调用该函数结束的位置。这需要第三个实参(p)与前一个调用相同。
delimiters
包含分隔符宽字符的C宽字符串。
这些在不同的调用中可能有所不同。
p
指向wchar_t指针的指针。该函数使用它来存储一个类型为wchar_t*的值,带有当前标记序列的状态。这个相同的指针将被传递给该函数的后续调用,以标记宽字符串的其余部分。
返回值
指向宽字符串中找到的最后一个标记的指针。
如果没有标记可获取,则返回空指针。
用例
/* wcstok example */
#include
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;
}
输出:
/* Dev-C++ C++11没有这个函数的原型,因此会出现编译错误。官网的参考答案为:
Splitting wide string "- This, a sample string." into tokens: This a sample string */
另请参考
strtok Split string into tokens (function)
wcscspn Get span until character in wide string (function)
wcspbrk Locate characters in wide string (function)