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

15 浏览
0 Comments

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

为什么有些示例使用\"endl\"而不是\"\\n\"?\n我听说\"endl\"的处理时间比\"\\n\"长,因为\"endl\"有一些刷新过程。\n但是,互联网上有这么多使用\"endl\"的示例。\n我想知道为什么他们使用被认为是低效的\"endl\"。\n对于英语表达不太好的抱歉......谢谢

0
0 Comments

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

许多人认为<< std::endl<< '\n' << std::flush不同,因为它会插入正确的换行符号。显然这是错误的观点。

其他人则不理解std::cinstd::cout是绑定在一起的,因此当前者想要读取时,后者会被刷新。

还有一些人从未听说过std::cerr,因此误将日志记录到std::cout。如果你使用错误的工具,强行让它按照你的意愿工作,而不是退后一步,认识到你需要的是锤子而不是螺丝刀,这种情况非常常见。

如果你真的需要,也许是因为你的程序特别不稳定,而你正在通过试错的方式进行编程(这使得你的代码实际上可能不正确,而只是在最后“看起来”工作),你可以很容易地使std::cout也变为无缓冲。没有必要养成更糟糕的习惯。

为什么有些示例中使用"endl"而不是"\n",主要是因为一些人对C++的输入输出流操作不够了解,导致误用或误解。解决这个问题的方法是深入学习C++的输入输出流操作,理解它们的正确用法和区别。

0
0 Comments

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

在生产代码中,通常不会直接使用std::cout,而是更倾向于使用某种日志库(用于将输出写入文件而不是标准流等)。在这样的日志库中,您希望在需要时仅在需要时刷新,但对于一些临时的、类似于调试的输出,std::endl的性能影响并不重要,更重要的是立即看到所需的输出。

"更重要的是立即看到所需的输出" - 并确保所有输出在程序崩溃之前都被打印出来。

问题的原因是在某些情况下,需要立即看到输出结果,并确保在程序崩溃之前所有的输出都被打印出来。这种情况下,使用std::endl而不是"\n"是一种解决方法。虽然std::endl比"\n"更耗时,但它会在输出后强制刷新缓冲区,确保所有内容都被立即打印出来。

在生产代码中,通常会使用日志库来处理输出,以便将输出写入文件而不是标准流。在这种情况下,可以通过控制日志库的刷新策略来避免使用std::endl。这样可以充分利用缓冲区的性能优势,并在需要时才刷新缓冲区。

总之,使用std::endl而不是"\n"的原因是为了立即看到输出结果,并确保在程序崩溃之前所有的输出都被打印出来。对于非生产代码和临时调试输出,使用std::endl是一种方便的解决方法。但在生产代码中,更推荐使用日志库来处理输出,并根据需要控制刷新缓冲区的策略。

0