Given a String comprising of many words separated by space, the task is to iterate over these words of the string in C++.
Example:
Input: str = “GeeksforGeeks is a computer science portal for Geeks”
Output: GeeksforGeeks
is
a
computer
science
portal
for
GeeksInput: str = “Geeks for Geeks”
Output: Geeks
for
Geeks
Approach: istringstream class is best suitable for this purpose. When a string is given split by whitespace, this class can be used to easily fetch and use each word of the String.
Syntax:
string str = {"Geeks for Geeks"}; istringstream iss(str);
Below is the implementation of the above approach:
// C++ program to Iterate through // a String word by word #include <iostream> #include <sstream> #include <string> using namespace std;
// Driver code int main()
{ // Get the String
string str = "GeeksforGeeks is a computer "
"science portal for Geeks" ;
// Initialise the istringstream
// with the given string
istringstream iss(str);
// Iterate the istringstream
// using do-while loop
do {
string subs;
// Get the word from the istringstream
iss >> subs;
// Print the word fetched
// from the istringstream
cout << subs << endl;
} while (iss);
return 0;
} |
GeeksforGeeks is a computer science portal for Geeks
Another method: This can also be done iteratively
- Calculate the length of the given string say n
- Iterate on given string from i = 0 to i < n
- Check if current character str[i] == ” ” or i == n – 1
- Print the string formed by word and empty the word string
- Otherwise, keep appending characters in the word string
Below is the implementation of the
// C++ program to Iterate a string Word by Word #include <bits/stdc++.h> using namespace std;
// Function to split words from the given string. void splitWord(string str)
{ // Find length of given variable
int n = str.length();
// Create an empty string
string word = "" ;
// Iterate over the string character by character using
// For loop
for ( int i = 0; i < n; i++) {
// Check if the current iteration is equal to ' ' or
// it's the last character
if (str[i] == ' ' or i == (n - 1)) {
// Print word
cout << word + str[i] << endl;
word = "" ;
}
// Add current character in word string
else {
word += str[i];
}
}
} int main()
{ // Given string
string str = "GeeksforGeeks is a computer "
"science portal for Geeks" ;
splitWord(str);
return 0;
} // This code is contributed by Shivesh Kumar Dwivedi |
GeeksforGeeks is a computer science portal for Geeks
Time Complexity: O(n), Where n is the size of the given string
Auxiliary Space: O(1)