std:: wcstok
|
定义于头文件
<cwchar>
|
||
|
wchar_t
*
wcstok
(
wchar_t
*
str,
const
wchar_t
*
delim,
wchar_t
**
ptr
)
;
|
||
在由 str 指向的以空字符结尾的宽字符串中查找下一个标记。分隔符由 delim 指向的以空字符结尾的宽字符串标识。
-
-
若
str
!
=
nullptr
,此次调用被视为对该特定宽字符串的首次
std::wcstok调用。函数会搜索第一个不包含在 delim 中的宽字符。
-
- 若未找到此类宽字符,则 str 中根本不存在令牌,函数返回空指针。
- 若找到此类宽字符,该字符即为令牌的起始位置。随后函数从该位置开始搜索第一个包含在 delim 中的宽字符。
-
-
若未找到此类宽字符,则
str
仅包含一个令牌,后续对
std::wcstok的调用将返回空指针。 - 若找到此类宽字符,该字符将被替换为空宽字符 L ' \0 ' ,且解析状态(通常是指向后续宽字符的指针)将存储于用户提供的地址 * ptr 中。
-
若未找到此类宽字符,则
str
仅包含一个令牌,后续对
- 随后函数返回指向令牌起始位置的指针。
-
若
str
==
nullptr
,此次调用被视为对
std::wcstok的后续调用:函数将从之前使用相同 * ptr 调用时的中断处继续。其行为等同于将指向最后检测到的令牌后续宽字符的指针作为 str 传入。
-
若
str
!
=
nullptr
,此次调用被视为对该特定宽字符串的首次
目录 |
参数
| str | - | 指向要分割的空终止宽字符串的指针 |
| delim | - | 指向标识分隔符的空终止宽字符串的指针 |
| ptr | - | 指向 wchar_t * 类型对象的指针,wcstok 使用该对象存储其内部状态 |
返回值
指向下一个令牌起始位置的指针,如果没有更多令牌则为空指针。
注释
此函数具有破坏性:它会在字符串
str
的元素中写入
L
'
\0
'
字符。特别需要注意的是,宽字符串字面量不能用作
std::wcstok
的第一个参数。
与 std::strtok 不同,此函数不会更新静态存储区:它将解析器状态存储在用户提供的地址中。
与大多数其他分词器不同,
std::wcstok
中的分隔符对于每个后续标记可以各不相同,甚至可能取决于先前标记的内容。
示例
#include <cwchar> #include <iostream> int main() { wchar_t input[100] = L"A bird came down the walk"; wchar_t* buffer; wchar_t* token = std::wcstok(input, L" ", &buffer); while (token) { std::wcout << token << '\n'; token = std::wcstok(nullptr, L" ", &buffer); } }
输出:
A bird came down the walk
参见
|
在字节字符串中查找下一个令牌
(函数) |
|
|
C 文档
关于
wcstok
|
|