在以下情况下会发生冲洗:
所以在大多数常规程序中,std :: endl基本上是不必要的,但它几乎无处不在。
答案 0 :(得分:11)
的std :: CERR
但是如果我不想写stderr,而是写stdout呢?
给std :: cin
但是,如果我只想给用户一些状态更新并且不想要任何输入呢?
程序终止
如上所述,如果我想在程序完成之前告诉用户一些该怎么办?
在许多实现中,标准输出是行缓冲的,意味着“\ n”无论如何都要刷新
但那些没有的平台呢?无论这样的平台目前是否存在,我都希望我的代码按照标准的定义工作,而不是“meh,可能在所有实现中都可以”。
如果以上所有适用(第四点实际上总是适用),则需要“手动”冲洗。如果冲洗由前三个中的一个处理,则不会。
答案 1 :(得分:4)
所以在大多数常规程序中,
std::endl
基本上是不必要的,但几乎在所有地方都使用它。
不,它不是冗余,因为标准不强制执行'\n'
的刷新。这只是一个特定于实现的行为,而std::endl
的行为总是被明确定义。