4

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

4

4 回答 4

3

没有我知道的。

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>&));

这也将立即应用该功能。

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

于 2012-03-04T15:58:22.217 回答
2

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

于 2012-03-04T15:56:54.420 回答
1

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

于 2012-03-04T15:58:08.163 回答
1

楼上的回答是对的!此外,取决于您是否使用<< endl;endl(cout)它可以减少代码中的行数。

例子:

你可以有类似的东西:

cout << "Hello World" << endl;

或者

cout << "Hello World";

endl(cout);

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

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

于 2016-07-20T16:32:45.417 回答