繁体   English   中英

有谁知道endl(cout)和cout << endl之间的区别?

[英]Does anyone know the difference between endl(cout) and cout << endl?

我认为他们是同一个东西,但是当我向在线法官发送代码时(带有endl(cout) )它给了我“错误的答案”判决,然后我试图用cout << endl发送另一个,并且法官接受了码! 有谁知道这些命令之间的区别?

没有我知道的。

std::endl是一个获取流并返回流的函数:

ostream& endl ( ostream& os );

当你将它应用于std::cout ,它只是立即应用该函数。

另一方面, std::basic_ostream有一个operator<<的重载,带有签名:

template <typename C, typename T>
basic_ostream<C,T>& operator<<(basic_ostream<C,T>& (*pf)(basic_ostream<C,T>&));

这也将立即应用该功能。

因此,从技术上讲,即使stream std::cout << std::endl更具惯用性,也没有区别。 可能是法官机器人虽然过于简单,但并没有意识到这一点。

唯一的区别是endl(cout)被认为是一个全局函数,而在cout << endlendl被认为是一个操纵器。 但它们具有相同的效果。

上面的答案是正确的! 另外,取决于你是否使用<< endl; 或者endl(cout)它可以减少代码中的行数。

例:

你可以有类似的东西:

cout << "Hello World" << endl;

要么

cout << "Hello World";

endl(cout);

但是, cout << "Hello World" << endl(cout); //不起作用

所以在这个例子中它是2行对1行。

这两种形式之间的行为没有区别。 两者都引用相同的endl函数,它可以用作操纵器( cout << endl )或自由函数( endl(cout) )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM