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!
The stream extractors behave the same and skip whitespace. If you want to read every byte, you can use the unformatted input functions, like stream.
cin is whitespace delimited, so any whitespace (including \n ) will be discarded. Thus, c will never be \n .
getline(cin, newString); begins immediately reading and collecting characters into newString and continues until a newline character is encountered. The newline character is read but not stored in newString.
As a programmer, you can use endl or \n to create new line commands in C++.
Use the peek
method to check the next character:
while ((istream.peek()!='\n') && (istream>>x))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With