C 库函数 - strtok()
C 标准库 - <string.h>
描述
C 库函数 char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。
声明
下面是 strtok() 函数的声明。
char *strtok(char *str, const char *delim)
参数
str -- 要被分解成一组小字符串的字符串。
delim -- 包含分隔符的 C 字符串。
该函数返回被分解的第一个子字符串,如果没有可检索的字符串,则返回一个空指针。
实例
下面的实例演示了 strtok() 函数的用法。
实例
#include <string.h>
#include <stdio.h>
int main () {
char str[80] = "This is - www.runoob.com - website";
const char s[2] = "-";
char *token;
/* 获取第一个子字符串 */
token = strtok(str, s);
/* 继续获取其他的子字符串 */
while( token != NULL ) {
printf( "%s\n", token );
token = strtok(NULL, s);
}
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
This is
www.runoob.com
website
当strtok()在参数_Str的字符串中发现参数_Delim中包涵的分割字符时,则会将该字符改为\0 字符。
在第一次调用时,strtok()必需给予参数_Str字符串,往后的调用则将参数_Str设置成NULL。每次调用成功则返回指向被分割出片段的指针。
需要注意的是,使用该函数进行字符串分割时,会破坏被分解字符串的完整,调用前和调用后的s已经不一样了。
第一次分割之后,原字符串str是分割完成之后的第一个字符串,剩余的字符串存储在一个静态变量中。
实例
/将字符串"ab,cde,fghi"按照","分割。
char str[] = "ab,cde,fghi";
char *p[4];
p[0]= strtok(str, ",");
int i = 0;
while (p[i] != NULL)
{
i++;
p[i]= strtok(NULL, ",");
}
p[i] = "\0";
for (int i = 0; i < 4; i++)
{
cout << p[i] << endl;
}
让我们编译并运行上面的程序,这将产生以下结果:
ab
cde
fghi
https://www.runoob.com/cprogramming/c-function-strtok.html
https://www.cnblogs.com/zhoudingcocng/p/6554418.html
http://www.cplusplus.com/reference/cstring/strtok/