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