【发布时间】:2018-11-15 08:22:44
【问题描述】:
std::flush 在我正在查看的所有遗留代码中使用 std::endl 之后。当我第一次看到这个时,我的想法是看std::endl和std::flush的描述是多余的:
http://en.cppreference.com/w/cpp/io/manip/endl
http://en.cppreference.com/w/cpp/io/manip/flush
这是我在旧版源代码中看到的示例:
std::cout << "Generic Notification" << std::endl << std::flush;
但是,多年来,许多高级软件开发人员都看到了这段代码,我想知道我是否遗漏了一些细节。在std::endl 之后添加std::flush 有什么目的吗?
【问题讨论】:
-
如果不是
std::cout但其他一些流可能是有原因的...... -
@user463035818 那会是什么?
std::endl定义为“结束行和刷新”。 -
@Angew 我只是考虑了 OP 将原始代码中的任何流替换为
std::cout以实现 mcve 的可能性。当然,即使对于自定义流式对象,flush在那个地方也不应该有任何用处 -
我的第一条评论更准确:
flush如果不是标准流,可能是有原因的,尽管它仍然不是一个好的理由,因为流不会在 @987654335 上刷新@可以认为是坏了 -
也许从来没有人有过这样的机会告诉老年人这是没有意义的;)