KRao KRao - 3 months ago 14
C++ Question

C++ read from istream until newline (but not whitespace)

I have a std::istream which refers to matrix data, something like:

0.0 1.0 2.0
3.0 4.0 5.0


Now, in order to assess the number of columns I would like to have some code like:

std::vector<double> vec;
double x;
while( (...something...) && (istream >> x) )
{
vec.push_back(x);
}
//Here vec should contain 0.0, 1.0 and 2.0


where the ...something... part evaluates to false after I read 2.0 and istream at the point should be at 3.0 so that the next

istream >> x;


should set x equal to 3.0.

How would you achieve this result? I guess that the while condition

Thank you very much in advance for your help!

Answer

Use the peek method to check the next character:

while ((istream.peek()!='\n') && (istream>>x))