[英]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 << endl
, endl
被认为是一个操纵器。 但它们具有相同的效果。
上面的答案是正确的! 另外,取决于你是否使用<< 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.