加速C ++ istream&amp; read_hw(istream&amp; in,vector <double>&amp; hw)</double>

时间:2015-01-25 17:24:34

标签: c++

我试图理解Accelerated C ++一书中的一个功能。

在该书的第57页,我看到以下功能:

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的重点是什么。功能如何知道输入何时结束?有人能帮我理解这个吗?我读了这本书,但是它让我要求更多的澄清,以便我更好地理解这一点。

提前致谢。

2 个答案:

答案 0 :(得分:0)

Accelerated C++中,它还说:

  

请注意,read_hw会返回。此外,它会作为参考。   实际上,我们说我们得到了一个对象,我们就是这样   不会复制,我们将再次返回相同的对象   复制它。返回流允许我们的调用者写入。

用我的话来说,每次你写一个数字然后按回车键,流就会返回,然后调用这个函数。

用户点击输入信号表示流的结束。

答案 1 :(得分:0)

返回输入流的原因是调用者可以根据需要链接在流上执行其他操作的命令。

函数知道输入已经结束,因为>>运算符返回的流对象被隐式转换为布尔值,表示while条件中的读取操作是否成功。