我以为它们是一样的,但是当我给一个在线法官发送一个代码(用endl(cout))时,它给了我一个“错误答案”的判决,然后我试着用cout << endl发送另一个代码,法官接受了这个代码!有人知道这些命令之间的区别吗?
发布于 2012-03-04 23:58:22
据我所知没有。
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-04 23:56:54
唯一的区别是,endl(cout)被视为全局函数,而在cout << endl中,endl被视为操纵器。但它们具有相同的效果。
发布于 2012-03-04 23:58:08
这两种形式在行为上没有区别。两者都引用相同的endl函数,该函数可用作操纵器(cout << endl)或自由函数(endl(cout))。
https://stackoverflow.com/questions/9556328
复制相似问题