How can I detect if a line is empty?
I have:
1
2
3
4
5
I\'m reading this with istream r so:
int n;
r >> n
If you really don't want using getline, this code works.
#include <iostream>
using namespace std;
int main()
{
int x;
while (!cin.eof())
{
cin >> x;
cout << "Number: " << x << endl;
char c1 = cin.get();
char c2 = cin.peek();
if (c2 == '\n')
{
cout << "There is a line" << endl;
}
}
}
But be aware that this is not portable. When you using system that has different end lines characters than '\n' then would be problem. Consider reading whole lines and then extract data from it.
It could look like this:
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
istringstream is("1\n2\n3\n4\n\n5\n");
string s;
while (getline(is, s))
{
if (s.empty())
{
cout << "Empty line." << endl;
}
else
{
istringstream tmp(s);
int n;
tmp >> n;
cout << n << ' ';
}
}
cout << "Done." << endl;
return 0;
}
output:
1 2 3 4 Empty line.
5 Done.
Hope this helps.