21xrx.com
2024-11-10 00:34:45 Sunday
登录
文章检索 我的文章 写文章
C++中使用string的strtok函数
2023-07-04 23:28:35 深夜i     --     --
C++ string strtok函数

C++中的string类提供了许多方便的函数,使得字符串的处理变得非常简便。其中,strtok函数便是其中一种非常常用的函数,它能够将一个字符串按照指定的分隔符分割成多个子串,并返回一个指向下一个子串的指针。下面我们来详细了解一下这个函数的使用方法。

C++中的strtok函数定义在头文件 中,其语法为:

char *strtok(char \*str, const char \*delim);

其中,参数str表示要分割的字符串,参数delim表示分隔符。此函数将会返回一个指向第一个子串的指针,同时会将原字符串中的分隔符替换成'\0'。

该函数在执行完第一次分割操作之后,需要使用NULL作为参数str的值来获取后续子串,直到返回NULL为止。

下面是一个例子,演示了如何使用strtok函数将字符串按照空格分隔,并输出每个子串:


#include <iostream>

#include <cstring>

using namespace std;

int main()

{

  string str = "Welcome to C++ world";

  char *token = strtok(&str[0], " ");

  while (token != NULL)

  {

    cout << token << endl;

    token = strtok(NULL, " ");

  }

  return 0;

}

上述代码将会输出:

Welcome

to

C++

world

我们还可以使用多个分隔符来分割字符串,例如:


#include <iostream>

#include <cstring>

using namespace std;

int main()

{

  string str = "We,come ,to C++:world";

  char *token = strtok(&str[0], " ,:");

  while (token != NULL)

  {

    cout << token << endl;

    token = strtok(NULL, " ,:");

  }

  return 0;

}

上述代码将会输出:

We

come

to

C++

world

在使用strtok函数时需要注意以下几点:

1. 在执行完第一次分割操作后,需要将参数str设置为NULL来获取后续子串。

2. strtok函数会修改原始字符串的内容(将分隔符替换为'\0'),因此需要在使用strtok函数前先将原始字符串复制一份。

3. 该函数是不可重入的,即不能在多个线程中同时使用strtok函数分割同一个字符串。

综上所述,strtok是C++中非常常用的字符串分割函数,其使用方法也非常简单。希望这篇文章对大家有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复