简体   繁体   中英

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

I thought they were the same thing, but when I sent a code to an online judge (with endl(cout) ) it gave me "Wrong answer" verdict, then I tried to send another with cout << endl and the judge accepted the code! Does anyone know the difference between those commands?

There is none that I know of.

std::endl is a function that take a stream and return a stream:

ostream& endl ( ostream& os );

When you apply it to std::cout , it just applies the function right away.

On the other hand, std::basic_ostream has an overload of operator<< with the signature:

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

which will also apply the function right away.

So, technically, there is no difference, even though stream std::cout << std::endl is more idiomatic. It could be that the judge bot is simplistic though, and does not realizes it.

The only difference is that endl(cout) is considered as a global function whereas in cout << endl , endl is considered as a manipulator. But they have the same effect.

Answers above are correct! Also, Depending whether you use << endl; or endl(cout) it could reduce the number of lines in your code.

Example:

You can have something like:

cout << "Hello World" << endl;

OR

cout << "Hello World";

endl(cout);

HOWEVER, cout << "Hello World" << endl(cout); //Does NOT work

So it is 2 lines vs 1 line in this example.

There is no difference in behaviour between those two forms. Both refer to the same endl function, which can be used as a manipulator ( cout << endl ) or as a free function ( endl(cout) ).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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