1. ホーム
  2. c++

[解決済み] C++でistreamから改行まで読み込む(ただし空白は不可)

2022-02-11 23:49:59

質問

行列データを参照するstd::istreamがあるのですが、以下のような感じです。

0.0 1.0 2.0
3.0 4.0 5.0

さて、カラムの数を評価するために、次のようなコードを用意したいと思います。

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

2.0を読んでから...何とか...の部分がfalseと評価され、その時点のistreamは3.0であるべきなので、その次の

istream >> x;

はxを3.0に設定する必要があります。

この結果をどのように実現するのでしょうか?やはり、while条件

よろしくお願いします。

解決方法は?

を使用します。 peek メソッドで次の文字をチェックします。

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