1

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

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

4 回答 4

6

它写入Xcout 并检查流是否仍处于良好状态。它与

cout << X;
if (cout) {
   // ....
}

这是有效的,因为结果stream << value是对流的引用。这也是为什么你可以做类似的事情

stream << x << y << z;

因为它与

((stream << x) << y) << z;
于 2013-06-06T14:02:16.587 回答
2

在 C++ 中,iostream 插入和提取运算符<<>>返回调用它们的对象(即它们的左侧参数)。因此,if(cout<<X)首先将 X 插入 cout 流,然后将该流用作条件。并且 iostreams,当作为布尔值进行测试时,报告它们的状态:如果 OK,则为 true,如果处于错误状态,则为 false。

所以整个事情的意思是“打印X,如果cout没有错误,然后运行以下代码。”

于 2013-06-06T14:02:52.430 回答
1

如果输出(或输入,在相关情况ostream下)是“成功”(在其他话,并没有以某种方式失败)。例如,如果重定向到已满的磁盘上的文件,它将失败。coutoperator<<(ostream &os, ...)ostreamcout << Xcout

于 2013-06-06T14:02:58.247 回答
1

IO 库重新定义了按位>><<运算符来进行输入和输出并返回自身。所以这if(cout<<X)意味着输出Xcout然后返回cout进行条件检查:if(cout)检查是否cout处于错误状态。

于 2013-06-06T14:04:26.323 回答