C++ 为什么有些示例使用“endl”而不是“\n”?

C++ 为什么有些示例使用“endl”而不是“\n”?,c++,endl,C++,Endl,为什么有些示例使用endl而不是\n 我听说endl的处理时间长于\n,因为endl有一些刷新过程 但是,在互联网上有很多使用endl的例子 我想知道他们为什么使用endl,这被认为是低效的 对不起,英语太难懂了。。。。。。感谢通常情况下,直接使用std::cout并不适用于生产代码,在生产代码中,通常更倾向于使用某种日志记录工具来写入文件,而不是标准流等。。在这样的日志库中,您可能只希望在需要时刷新,但对于一些特殊的、调试类的输出,std::endl的性能影响实际上并不重要,更重要的是立即看到

为什么有些示例使用endl而不是\n

我听说endl的处理时间长于\n,因为endl有一些刷新过程

但是,在互联网上有很多使用endl的例子

我想知道他们为什么使用endl,这被认为是低效的


对不起,英语太难懂了。。。。。。感谢

通常情况下,直接使用std::cout并不适用于生产代码,在生产代码中,通常更倾向于使用某种日志记录工具来写入文件,而不是标准流等。。在这样的日志库中,您可能只希望在需要时刷新,但对于一些特殊的、调试类的输出,std::endl的性能影响实际上并不重要,更重要的是立即看到所需的输出。

通常,直接使用std::cout并不适用于生产代码,在生产代码中,通常更倾向于使用某种日志记录工具来写入文件,而不是标准流等。。在这样的日志库中,您可能希望注意只在需要时刷新,但是对于一些特殊的、类似调试的输出,std::endl的性能影响实际上并不重要,更重要的是立即看到所需的输出

许多人认为这不同于,因为它会插入右端点标记。 就是

其他人不理解这一点,因此当前者想要阅读时,后者会脸红

还有一些人从未听说过,因此错误地将日志记录到std::cout。 如果你使用了错误的工具,强迫它按照你的意愿行事,而不是退后一步,认识到你想要的是锤子而不是螺丝刀,这是令人痛苦的普遍现象

如果你真的想,也许是因为你的程序特别脆弱,而且你是通过反复试验来编程的,这使得你的代码实际上不可能是正确的,而不是仅仅在最后看起来有效,你可以很容易地。 没有必要养成更多的坏习惯

 std::cout << std::unitbuf;
许多人认为这不同于,因为它会插入右端点标记。 就是

其他人不理解这一点,因此当前者想要阅读时,后者会脸红

还有一些人从未听说过,因此错误地将日志记录到std::cout。 如果你使用了错误的工具,强迫它按照你的意愿行事,而不是退后一步,认识到你想要的是锤子而不是螺丝刀,这是令人痛苦的普遍现象

如果你真的想,也许是因为你的程序特别脆弱,而且你是通过反复试验来编程的,这使得你的代码实际上不可能是正确的,而不是仅仅在最后看起来有效,你可以很容易地。 没有必要养成更多的坏习惯

 std::cout << std::unitbuf;

调试时可能会对使用std::endl!感兴趣!。若要查看屏幕上写入的内容,在程序冲突之前,它也会在发送后调用flush\n因为99.9%的时间,您希望刷新,并且性能令人满意。几年前,这是一种时尚的微观优化,即使是那些认为过早优化是万恶之源的人,对于新手来说,它也更冗长,更容易理解。endl作为终点线的快捷方式比某些魔法符号“\n”更明显。当然,您甚至不会注意到有20行代码的玩具程序中的任何差异。.std::endl刷新输出流。如果您使用\n,它将被缓冲,您可能无法在屏幕上看到新行。std::endl的唯一问题是性能。调试时可能会对使用std::endl感兴趣!。若要查看屏幕上写入的内容,在程序冲突之前,它也会在发送后调用flush\n因为99.9%的时间,您希望刷新,并且性能令人满意。几年前,这是一种时尚的微观优化,即使是那些认为过早优化是万恶之源的人,对于新手来说,它也更冗长,更容易理解。endl作为终点线的快捷方式比某些魔法符号“\n”更明显。当然,您甚至不会注意到有20行代码的玩具程序中的任何差异。.std::endl刷新输出流。如果您使用\n,它将被缓冲,您可能无法在屏幕上看到新行。std::endl的唯一问题是性能。更重要的是立即看到所需的输出,并确保在婴儿车崩溃之前打印所有输出。更重要的是立即看到所需的输出,并确保在婴儿车崩溃之前打印所有输出。