How to Split a C++ String into a Vector of Substrings?
Last Updated :
01 Mar, 2024
Improve
In C++, splitting a string into a vector of substrings means we have to split the given string into a substring based on a given delimiter and store each substring in a vector. In this article, we will learn how to split a string into a vector of substrings in C++.
Example:
Input:
str= "Hello, I am Geek from Geeksforgeeks "
Delimiter= ' '
Output:
Hello,
I
am
Geek
from
Geeksforgeeks
Split an std::string into a Vector of Strings in C++
To split a std::string into a std::vector of substrings use the stringstream with a combination of std::string::getline. The below steps shows how to do that:
Approach
- Create an input string stream from the input string using the stringstream.
- Iterate through the stream, using
getline
to extract the substring using the delimiter. - Add the extracted substring to the vector.
- Print the vector of substrings.
C++ Program to Split a String into Vector of Substrings
The below example demonstrates how we can split a given string into a vector of substrings in C++.
// C++ Program to illustrate how to split a string to vector
// of substring
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
// Function to split a string into tokens based on a
// delimiter
vector<string> splitString(string& input, char delimiter)
{
// Creating an input string stream from the input string
istringstream stream(input);
// Vector to store the tokens
vector<string> tokens;
// Temporary string to store each token
string token;
// Read tokens from the string stream separated by the
// delimiter
while (getline(stream, token, delimiter)) {
// Add the token to the vector of tokens
tokens.push_back(token);
}
// Return the vector of tokens
return tokens;
}
int main()
{
// Input string
string input = "Hello, I am Geek from Geeksforgeeks";
// Delimiter
char delimiter = ' ';
// calling the function to Split the input string into
// vector of substring
vector<string> vecOfSubStr
= splitString(input, delimiter);
// Print the vector of substrings
for (auto& it : vecOfSubStr) {
cout << it << endl;
}
return 0;
}
Output
Hello, I am Geek from Geeksforgeeks
Time complexity: O(n), here n is the length of the input string.
Auxilliary Space: O(n)