※ 引述《tommy (下面的也是)》之銘言:
: C語言中,有一個"endl"的指令
: 為什麼在某些程式尾有加,有些則無???????
: Why endl forces any accumulated outputs to be printed at that moment?
: 上面是原文中的解釋~~~~~~~~~
: 可不可以把endl完整的用法告訴我呢~~~~~~~
: 在其他的書中,好像沒有用到endl(end line)的指令。
endl 是 C++ 裡面才有的東西,剛好我計程課是上 C++ 就
順便在這裡提供一點意見。
endl 通常是配合 cout 這類的東西用,功能就是印出一個
換行的字元,還有把 buffer flush 掉。
這裡,就要講到什麼是 buffer 。在電腦裡面, CPU 的運
算速度很快,而 I/O 的速度很慢,如果我們程式一邊執行
運算時,又要去處理 I/O , CPU 就會在那邊等 I/O 完成
後才能再去做其他的運算,如果三步五時都在做這種事,
整個系統就很沒有效率。於是就想出來,把我們要做的 I/O
先堆在一個 buffer 裡面,等到東西累積到 buffer 的大小
時,就可以只做一次 I/O ,這樣就比較 efficient 。
可是問題是,假如 buffer 的東西還沒滿,我們就想要強
迫它來做寫入呢?我們可以用 cout.flush() ,而 endl
裡面也偷偷做了 flush 的動作。
我想大概是這樣子吧,有錯誤再講。
--
※ 發信站: 批踢踢實業坊(ptt.m8.ntu.edu.tw)
◆ From: Port5.TS1.neto.