KoenigとMooのAccelerated C++ブック(57ページ)では、以下に示す関数を提供します。これはin
です。その理由は、入力が成功したかどうかを示すことです(55ページ)。しかし、in
は、関数の引数の1つとして参照渡しされました。だから元のオブジェクトを見て、アイスストリームの状態を取得することはできませんか?C++の関数への参照によって渡されたオブジェクトを返すのはなぜですか?
// read homework grades from an input stream into a `vector<double>'
istream& read_hw(istream& in, vector<double>& hw)
{
if (in) {
// get rid of previous contents
hw.clear();
// read homework grades
double x;
while (in >> x)
hw.push_back(x);
// clear the stream so that input will work for the next student
in.clear();
}
return in;
}
を読み込むことができますが、 'であることができますが、'しばらく(read_hw(S、データ)){...} while(s){read_hw(s、data);よりももっと良い。 if(s){...}} ' – molbdnilo