如果条件检查Cout

时间:2013-06-06 13:58:51

标签: c++ if-statement cout

我读了这一行,我不明白它的作用:

if(cout<<X) //What does this mean? 
{
...
}

4 个答案:

答案 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是否在错误状态。