0

这是来自加速 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;
}

in.clear()行应该清除先前输入产生的可能错误,但为什么在我们开始输入之前没有清除它,即while (in >> x)在行之前?实际上,两次清除输入流(输入到hw之前和之后)不是更安全吗?

4

1 回答 1

0

在到达流的末尾后,您正在清除标志,因为您打算到达流的末尾。另一个函数引发的标志可能不是故意的,可能需要处理。

于 2013-07-08T01:46:26.527 回答