std::strtok
来自cppreference.com
定义于头文件 <cstring>
|
||
char* strtok( char* str, const char* delim ); |
||
寻找 str
所指向的空终止字节字符串中的下个记号。由 delim
所指向的空终止字节字符串鉴别分隔字符。
此函数被设计为调用多次,以从同一字符串获得相继的记号。
- 若 str != NULL ,则调用被当做
strtok
对此特定字符串的首次调用。函数搜索首个不含于delim
的字符。
- 若找不到这种字符,则
str
中完全没有记号,而函数返回空指针。 - 若找到这种字符,则它是记号的起始。然后函数从
delim
所含的首个字符的该点搜索。
- 若找不到这种字符,则
str
只有一个记号,而将来对strtok
的调用将返回空指针 - 若找到这种字符,则用空字符 '\0' 替换它,并将指向下个字符的指针存储于静态位置,以为后继调用所用。
- 若找不到这种字符,则
- 然后函数返回指向记号起始的指针
- 若找不到这种字符,则
- 若 str == NULL ,则将调用当做对
strtok
的后继调用,函数从先前调用中它剩下的位置开始。行为如同将先前存储的指针作为 str 传递。
参数
str | - | 指向要记号化的空终止字节字符串的指针 |
delim | - | 指向标识分隔符的空终止字节字符串的指针 |
返回值
指向下个记号起始的指针,或若无更多记号则为 NULL 。
注意
此函数是破坏性的:它写入 '\0' 字符于字符串 str
的元素。特别是,字符串字面量不能用作 strtok
的首参数。
每次对 strtok
的调用都会修改静态对象:它不是线程安全的。
不同于大多数其他记号化器, strtok
中的分隔符能对于后继记号不同,而且甚至能依赖于先前记号的内容。
示例
运行此代码
输出:
A bird came down the walk
参阅
寻找任何来自分隔符集合的字符的首个位置 (函数) | |
返回仅由另一字节字符串中找不到的字符组成的最大起始段的长度 (函数) | |
返回仅由另一字节字符串中找到的字符组成的最大起始段的长度 (函数) |