In C++, stringstreams are streams that extract input from a string (as opposed to the keyboard cin
or a file). To use in our programs, we must #include <sstream>
.
They’re useful when input must be processed one line at a time. This allows our program to take in an entire line of input, analyse it, and process accordingly by deciding if the input is valid or not.
A potentially good idea is to create a new string stream handler sin
and so the following:
Methods
The getline()
method inputs the entire line from the IO stream. Take an example:
This is especially useful because we can essentially read cin
into a string variable inputLine
and any cin
can be read from there. For each successive time we call the >>
operator, we read a new piece of data into a variable. The reading cursor is the only thing that moves.
Other methods include:
str()
converts a string stream to a string. If we calledcout << ss.str()
, it would output all the content that was written to it. What’s inss
remains there.eof()
evaluates whether there are any sub-strings within the stream for us to read.
Other considerations
When passing string streams as function inputs, we must pass by reference, not by value.
To flush out a string stream, we can use ss.str("")
.