How to use strtok() Function In C++

The strtok() function returns the next token separated by a delimiter in a string. The tokens are pushed into the vector until the null pointer is reached.

C++




// C++ Program for Conversion
// String To Vector using Delimiter
// Using strtok() function
#include<bits/stdc++.h>
using namespace std;
  
vector<string> split(string str,   char* delimiter)
{
    vector<string> v;
     char *token = strtok(const_cast<char*>(str.c_str()), delimiter);
    while (token != nullptr)
    {
        v.push_back(string(token));
        token = strtok(nullptr, delimiter);
    }
   
  return v;
}
  
int main()
{
    // Delimiter is " "
    string s = "w3wiki is a computer science portal";
    vector<string> res = split(s, " ");
 
    for (int i = 0; i < res.size(); i++) {
        cout << res[i] << endl;
    }
    // Delimiter is **
    s = "w3wiki**is**a**computer**science**portal";
    res = split(s, "**");
 
    for (int i = 0; i < res.size(); i++) {
        cout << res[i] << endl;
    }
  
    return 0;
}


Output

w3wiki
is
a
computer
science
portal
w3wiki
is
a
computer
science
portal

C++ String to Vector Using Delimiter

Delimiters are used as separators between the characters or words in a string so that different results can get separated by the delimiter. In this article let us see the different ways in which a string with delimiters can be converted to a vector of words after getting separated by delimiters.

Example:

string x=”A B C”;

string y=”A*B*C”;

// Separate x into [‘A’,’B’,’C’] with delimiter ‘ ‘

// Separate y into [‘A’,’B’,’C’] with delimiter ‘*’

Methods that can be used to perform this operation are :

  • Using find() function
  • Using strtok() function
  • Using getline() and stringstream
  • Using find_first_not_of() with find() function
  • Using regex_token_iterator

Similar Reads

1. Using find() function

The find() function is used to find the first occurrence of the substring a string and returns the index of that in the given string, if not found returns npos. To know more about npos refer to the article: string::npos in C++....

2. Using strtok() Function

...

3. Using getline() and stringstream

The strtok() function returns the next token separated by a delimiter in a string. The tokens are pushed into the vector until the null pointer is reached....

4. Using find_first_not_of() with find() function

...

5. Using regex_token_iterator

It works for single-character delimiters....