我读了这一行,但我不明白它的作用:
if(cout<<X) //What does this mean?
{
...
}
它写入X
cout 并检查流是否仍处于良好状态。它与
cout << X;
if (cout) {
// ....
}
这是有效的,因为结果stream << value
是对流的引用。这也是为什么你可以做类似的事情
stream << x << y << z;
因为它与
((stream << x) << y) << z;
在 C++ 中,iostream 插入和提取运算符<<
并>>
返回调用它们的对象(即它们的左侧参数)。因此,if(cout<<X)
首先将 X 插入 cout 流,然后将该流用作条件。并且 iostreams,当作为布尔值进行测试时,报告它们的状态:如果 OK,则为 true,如果处于错误状态,则为 false。
所以整个事情的意思是“打印X,如果cout没有错误,然后运行以下代码。”
如果输出(或输入,在相关情况ostream
下)是“成功”(在其他话,并没有以某种方式失败)。例如,如果重定向到已满的磁盘上的文件,它将失败。cout
operator<<(ostream &os, ...)
ostream
cout << X
cout
IO 库重新定义了按位>>
和<<
运算符来进行输入和输出并返回自身。所以这if(cout<<X)
意味着输出X
到cout
然后返回cout
进行条件检查:if(cout)
检查是否cout
处于错误状态。