'flushing the stream' 是什么意思?

What is meant by 'flushing the stream'?

我读到在 C++ 中,'\n' 优于 'endl' 换行,因为 'endl' 插入新行并刷新流。请告诉我什么是冲洗流?

当您刷新流时,您强制输出流的内容到 OS 使用的默认输出媒体。术语流是一种抽象的结构,允许您发送或接收未知数量的字节。在程序的某些点上,输出流会自动刷新,并非总是需要刷新。为了减少开销并提高性能,流缓冲其内容并且仅定期 "flushes" 它。流的示例是 cin (std::cin) 和 cout (std::cout),它们是输入和输出流。 "std::cin" 有一个缓冲区来存储输入数据,而 "std::cout's" 缓冲区用于存储将要发送到屏幕的数据。

刷新流可确保输出已写入该流的所有数据,包括清除任何可能已缓冲的数据。

一些流被缓冲以提高性能,例如写入磁盘的流可能会缓冲,直到内容达到块大小。

Flushing a stream 更可能是 Flushing the toilet,在 toilet Flushing the toilet 中清除,在 Stream(I/O Stream) Flushing 中“Buffer-memory”被清除。(这里 Buffer- memory 是用来临时存储数据的内存 from/for I/O 流)。

因此,每次“刷新流(意味着使用“endl”)”都可能成为程序的瓶颈,意味着您的程序总是在此时变慢。

有关缓冲区访问的更多信息:this