C++ 中的wcstok() 函数以空字符结尾的宽字符串返回下一个标记。
wcstok() 函数在<cwchar> 头文件中定义。
wcstok()原型
wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t ** ptr);
wcstok() 函数接受三个参数:str、delim 和 ptr。此函数在 str 指向的宽字符串中查找标记。指针 delim 指向分隔符。
可以多次调用此函数以从同一宽字符串中获取令牌。有两种情况:
- 如果 str 不为 NULL:
对wcstok() 的调用被视为对该宽字符串的第一次调用。该函数搜索不包含在 delim 中的第一个宽字符。如果没有找到这样的宽字符,则宽字符串不包含任何标记。所以返回一个空指针。
如果找到这样的宽字符,该函数将从那里搜索出现在 delim 中的宽字符。如果没有找到分隔符,则 str 只有一个标记。如果找到分隔符,则将其替换为 L'\0',并将指向下一个字符的指针存储在 *ptr 中。最后,该函数返回指向标记开头的指针。 - 如果 str 为 NULL:
该调用被视为对 wcstok 的后续调用,并且该函数使用相同的 *ptr 从它在先前调用中离开的位置继续。
参数:
str
:指向要标记的空终止宽字符串的指针。delim
:指向包含分隔符的空终止宽字符串的指针。ptr
: 指向 wcstok 用来存储其内部状态的宽字符的指针。
返回:
- wcstok() 函数返回指向下一个标记开头的指针(如果有)
- 如果找不到更多标记,则返回 NULL。
示例:wcstok() 函数如何工作?
#include <cwchar>
#include <clocale>
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "en_US.utf8");
wchar_t str[] = L"parrot,owl,sparrow,pigeon,crow";
wchar_t delim[] = L"\u002c";// unicode for comma
wchar_t *ptr;
wcout << L"The tokens are:" << endl;
wchar_t *token = wcstok(str,delim,&ptr);
while (token)
{
wcout << token << endl;
token = wcstok(NULL,delim,&ptr);
}
return 0;
}
运行程序时,输出将是:
The tokens are: parrot owl sparrow pigeon crow
相关用法
- C++ wcstok()用法及代码示例
- C++ wcstold()用法及代码示例
- C++ wcstod()用法及代码示例
- C++ wcstof()用法及代码示例
- C++ wcstol()用法及代码示例
- C++ wcstombs()用法及代码示例
- C++ wcstoull()用法及代码示例
- C++ wcstoll()用法及代码示例
- C++ wcstoul()用法及代码示例
- C++ wcsftime()用法及代码示例
- C++ wcscspn()用法及代码示例
- C++ wcsncmp()用法及代码示例
- C++ wcsstr()用法及代码示例
- C++ wcsrchr()用法及代码示例
- C++ wcsncpy()用法及代码示例
- C++ wcslen()用法及代码示例
- C++ wcsspn()用法及代码示例
- C++ wcschr()用法及代码示例
- C++ wcspbrk()用法及代码示例
- C++ wcscat()用法及代码示例
注:本文由纯净天空筛选整理自 C++ wcstok()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。