在C++中返回对istream的引用

Rui*_*Liu 2 c++ reference istream

我在Accelerated C++上看到了这个.这是一个简化版本.

istream& read_hw(istream& in, Student_info& s)
{    
    in >> s.name >> s.midterm >> s.final;
    return in;
}
Run Code Online (Sandbox Code Playgroud)

然后,我们可以将函数调用为:

Student_info s;
read_hw(cin, s);
Run Code Online (Sandbox Code Playgroud)

我的问题是,

  1. 将引用返回istream有什么意义?由于这两个参数都是通过引用传递的;
  2. 在调用函数时,我们似乎并不关心返回值

cni*_*tar 8

你应该阅读下一段:

返回流允许我们的调用者编写

if (read_hw(cin, homework)){/*...*/} 
Run Code Online (Sandbox Code Playgroud)

作为的缩写

read_hw(cin, homework);
if (cin) {/*...*/}
Run Code Online (Sandbox Code Playgroud)


tim*_*rau 5

返回引用以istream启用级联。例如:

int i, j;
std::cin >> i >> j;
// Equivalent to std::cin.operator>>(i).operator>>(j);
Run Code Online (Sandbox Code Playgroud)

istream::operator>>()返回istream&以便级联>>工作。