How to use getline() in C++ when there are blank lines in input?
In C++, if we need to read a few sentences from a stream, the generally preferred way is to use the getline() function as it can read string streams till it encounters a newline or sees a delimiter provided by the user. Also, it uses <string.h> header file to be fully functional.
Here is a sample program in c++ that reads four sentences and displays them with “: newline” at the end
CPP
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
string str;
int t = 4;
while (t--) {
getline(cin, str);
cout << str << " : newline" << endl;
}
return 0;
}
|
Sample Input :
This
is
Geeks
for
As the expected output is:
This : newline
is : newline
Geeks : newline
for : newline
The above input and output look good, there may be problems when the input has blank lines in between.
Sample Input :
This
is
Geeks
for
Output:
This : newline
: newline
is : newline
: newline
It doesn’t print the last 3 lines. The reason is that getline() reads till enter is encountered even if no characters are read. So even if there is nothing in the third line, getline() considers it as a single line. Further, observe the problem in the second line. The code can be modified to exclude such blank lines. Modified code:
CPP
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
string str;
int t = 4;
while (t--) {
getline(cin, str);
while (str.length() == 0)
getline(cin, str);
cout << str << " : newline" << endl;
}
return 0;
}
|
Input:
This
is
Geeks
for
Output:
This : newline
is : newline
Geeks : newline
for : newline
Last Updated :
03 Jun, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...