C++从istream读取直到换行符(但不是空格)

Ste*_*phQ 18 c++ iostream

我有一个std :: istream引用矩阵数据,如:

0.0 1.0 2.0
3.0 4.0 5.0
Run Code Online (Sandbox Code Playgroud)

现在,为了评估列数,我想要一些代码,如:

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
Run Code Online (Sandbox Code Playgroud)

在...读取2.0之后......某事情...评估为false,并且该点的istream应该是3.0以便下一个

istream >> x;
Run Code Online (Sandbox Code Playgroud)

应该将x设置为3.0.

你会如何实现这个结果?我想那个条件

非常感谢您的帮助!

tza*_*man 12

使用该peek方法检查下一个字符:

while ((istream.peek()!='\n') && (istream>>x))
Run Code Online (Sandbox Code Playgroud)

  • 如果该行在<newline>之前包含*any*white-space,则很容易破坏 (4认同)

Cli*_*ord 7

使用std :: getline()将行读入std :: string ,然后将字符串分配给std :: istringstream对象,并从中提取数据而不是直接从istream中提取数据.