当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ wcstok()用法及代码示例


C++ 中的wcstok() 函数以空字符结尾的宽字符串返回下一个标记。

wcstok() 函数在<cwchar> 头文件中定义。

wcstok()原型

wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t ** ptr);

wcstok() 函数接受三个参数:str、delim 和 ptr。此函数在 str 指向的宽字符串中查找标记。指针 delim 指向分隔符。

可以多次调用此函数以从同一宽字符串中获取令牌。有两种情况:

  1. 如果 str 不为 NULL:
    对wcstok() 的调用被视为对该宽字符串的第一次调用。该函数搜索不包含在 delim 中的第一个宽字符。如果没有找到这样的宽字符,则宽字符串不包含任何标记。所以返回一个空指针。
    如果找到这样的宽字符,该函数将从那里搜索出现在 delim 中的宽字符。如果没有找到分隔符,则 str 只有一个标记。如果找到分隔符,则将其替换为 L'\0',并将指向下一个字符的指针存储在 *ptr 中。最后,该函数返回指向标记开头的指针。
  2. 如果 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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。