簡體   English   中英

在iostream中緩沖

[英]buffering in iostream

有人可以解釋一下,這到底是什么意思? 我試圖了解clogcerr什么區別,區別僅在於緩沖,謝謝

當您編寫堵塞時,您實際上是在內存中存儲字符。 當此存儲已滿時,它將寫入實際流。 當關閉流時(這將在程序結束時發生),然后將所有剩余數據寫入流中(也可以進行手動刷新)。

對於cerr,這不會發生。

通常,由於寫入內存的速度比寫入大多數流的速度快,因此緩沖的效果是性能的整體提高。 並非總是這樣(一個經典的例子是,間接級別導致將緩沖區寫入到寫入緩沖區的緩沖區),但通常足以使它成為合理的默認值。 但是,結果是在寫入流對象和寫入實際流之間可能會有延遲,這在某些情況下是不合適的。

可以合理地想象,寫給cerr的某些東西可能需要立即采取行動,但是寫給堵塞的東西則不需要,因此有所不同。

clog和cerr之間的區別在於,clog已完全緩沖,而到cerr的輸出在每次格式化后都會寫入外部設備。 對於完全緩沖的流,僅當緩沖區已滿時才將輸出寫入實際的外部設備。 因此,clog對於將輸出重定向到文件更為有效,而cerr主要用於終端I / O。 每次格式化后寫入外部設備,如果是cerr,則寫入終端,其目的是使輸出與終端的輸入同步。 而且,預定義的流與其關聯的C標准文件同步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM