[英]How stream-buffer works in C++?
我正在測試用於流緩沖的C ++代碼。 就我對緩沖思想的理解而言,即使for循環形式存在延遲,以下代碼也應同時打印“ Before loop”和“ After loop”。 問題是它以循環延遲打印它們。 有人可以向我解釋原因嗎? 我將cout作為參數傳遞。
void testBuffer(ostream& os){
os << "Before loop - ";
for(int i = 0; i < 2000000000; i++){
// waste time
}
os << "After loop " << endl;
}
緩沖區不是無限的,在非文件流的情況下,緩沖區甚至可能沒有那么大。
僅僅因為您沒有編寫std::flush
並不意味着絕對不會從流中立即得到響應。 如果緩沖區已滿,它將繼續刷新。 只是您並沒有強迫自己提早沖洗。
此外,您可能會想到,在調試模式下, std::cout
行為類似於std::cerr
(基本上禁用了緩沖)。 我不知道是否有任何實現。
故事的道德啟示:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.