A stringstream associates a string object with a stream allowing you to read from the string as if it were a stream (like cin). To use stringstream, we need to include sstream header file. The stringstream class is extremely useful in parsing input.
Basic methods are:
- clear()- To clear the stream.
- str()- To get and set string object whose content is present in the stream.
- operator <<- Add a string to the stringstream object.
- operator >>- Read something from the stringstream object.
Examples:
1. Count the number of words in a string
Examples:
Input: Asipu Pawan Kumar
Output: 3
Input: Geeks For Geeks Ide
Output: 4
Below is the C++ program to implement the above approach-
C++
#include <iostream>
#include <sstream>
#include<string>
using namespace std;
int countWords(string str)
{
stringstream s(str);
string word;
int count = 0;
while (s >> word)
count++;
return count;
}
int main()
{
string s = "geeks for geeks geeks "
"contribution placements" ;
cout << " Number of words are: " << countWords(s);
return 0;
}
|
Output Number of words are: 6
Time complexity: O(n*log(n)).
Auxiliary space: O(n).
2. Print frequencies of individual words in a string
Examples:
Input: Geeks For Geeks Quiz Geeks Quiz Practice Practice
Output: For -> 1
Geeks -> 3
Practice -> 2
Quiz -> 2
Input: Word String Frequency String
Output: Frequency -> 1
String -> 2
Word -> 1
Below is the C++ program to implement the above approach-
C++
#include <bits/stdc++.h>
#include <iostream>
#include <sstream>
#include<string>
using namespace std;
void printFrequency(string st)
{
map<string, int >FW;
stringstream ss(st);
string Word;
while (ss >> Word)
FW[Word]++;
map<string, int >::iterator m;
for (m = FW.begin(); m != FW.end(); m++)
cout << m->first << "-> "
<< m->second << "\n" ;
}
int main()
{
string s = "Geeks For Geeks Ide" ;
printFrequency(s);
return 0;
}
|
OutputFor-> 1
Geeks-> 2
Ide-> 1
Time complexity: O(n*log(n)).
Auxiliary space: O(n).
3. Convert Integer to string
Since, the insertion and extraction operators of string stream work with different data types. So that’s why it works well with integers.
We will insert an integer into the string stream and after extracting that into a string, that integer value will become a string.
Code-
C++
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
int val=123;
stringstream geek;
geek << val;
string x;
geek >> x;
cout<<x+ "4" <<endl;
return 0;
}
|
Output-
1234
Time complexity: O(n),n is the length of the integer
Auxiliary space: O(n)
Removing spaces from a string using Stringstream
Converting Strings to Numbers in C/C++
This article is contributed by ASIPU PAWAN KUMAR. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.