我已经读过' \ n'优于' endl'对于c ++中的新行,因为' endl'插入新行并刷新流。请告诉我什么是冲洗流?
答案 0 :(得分:9)
刷新流可确保输出已写入该流的所有数据,包括清除任何可能已缓冲的数据。
缓冲一些流以帮助提高性能,例如:写入磁盘的流可能会缓冲,直到内容达到块大小。
答案 1 :(得分:3)
刷新流时,会强制输出流的内容为操作系统使用的默认输出介质。术语流是一种构造的抽象,允许您发送或接收未知数量的字节。在程序的某些点上,输出流会自动刷新,并不总是需要刷新。为了减少开销并提高性能,流缓冲其内容并且仅定期"刷新"它。流的示例是cin(std :: cin)和cout(std :: cout),它们是输入和输出流。 "给std :: cin"有一个缓冲区来存储输入数据而#34; std :: cout' s"缓冲区用于存储将要发送到屏幕的数据。
答案 2 :(得分:1)
冲洗流更像是冲洗马桶,在厕所冲洗马桶被清除,在 Stream(I/O Stream) 冲洗“缓冲内存”被清除。(这里的缓冲内存是一个内存用于临时存储来自/用于 I/O 流的数据)。
因此,每次“Flushing the Stream(意味着使用“endl”)”都可能成为程序的瓶颈,这意味着您的程序此时总是会变慢。
有关缓冲区访问的更多信息:this