为什么我们在C++中应该避免使用std::endl


在本节中,我们将了解为何在将行打印到控制台或文件中时,我们应该避免使用std::endl。我们使用std::endl在当前行后面创建一个新行。对于一些IO操作来说,它不会产生任何问题。但针对大规模IO任务,它会降低性能。

endl用于创建新行,但它不仅发送到新行,而且在将光标发送到下一行之后,每次都会刷新缓冲区。

刷新缓冲区不是程序员的任务,而是由操作系统负责。每次它要求刷新时,就会向操作系统请求。这种请求比较昂贵。而且我们不需要在每次编写一些行后都刷新缓冲区。当缓冲区已满时,IO流会自动清除它。

如果我们通过使用std::endl和使用'\n'分析将近100000行文本写入文件所需的时间,我们可以轻易看出两者的区别。与在之后使用'\n'相比,使用std::endl的代码完成这项任务所需的时间大约为两倍。

更新时间: 2019年7月30日

623次浏览

开启您的 职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.