← Patterns
Read line-by-line
1234567891011121314 | #include <sstream>
#include <string>
int main()
{
std::istringstream stream{"This stream\n"
"contains many\n"
"lines.\n"};
std::string line;
while (std::getline(stream, line)) {
// Process line
}
} |
This pattern is licensed under the CC0 Public Domain Dedication.
Requires
c++98
or newer.
Intent
Process the contents of an input stream line-by-line.
Description
We use a std::istringstream as an
example input stream (lines 6–8) containing multiple lines (separated
by \n). This stream could be replaced with
std::cin or a file stream, for example. On line 9, we
introduce a std::string into which we
will read each line of the stream.
On lines 11–13, we use a while loop to iterate over each line of the
stream. The condition of the loop is a call to
std::getline, which extracts lines from
stream into line. The result of this call will evaluate to
false only when the extraction fails, such as when there are no
lines left to extract.