2012-04-22 112 views
0

我正在閱讀C++ 11標準。 27.6.3.4.3/7和27.6.3.4.5/3節描述了函數「int_type underflow();」和「int_type overflow(int_type c = traits :: eof());」。沒有例子可以解釋他們是如何工作的。有人可以幫助解釋這個例子的功能嗎?basic_streambuf函數如何溢出和溢出

+0

這些函數在製作自己的streambuf時使用。該標準提供了攻擊文件或字符串的流緩衝區。例如,我已將一個附加到列表框中,以便在看到換行符時,寫入「cout」或「cerr」的任何消息最終顯示爲列表項。我不得不重寫'overflow()'來實現這一點。 – 2012-04-22 05:22:44

回答

3

基本想法很簡單。 underflow用於輸入流。當輸入緩衝區中沒有數據時,調用underflow以從實際源(例如文件或套接字)讀取數據,以至少部分地重新填充緩衝區。

overflow幾乎恰恰相反 - 當緩衝區已滿時,overflow被稱爲將數據寫入相關文件或套接字或其他任何內容。它也被稱爲在輸出流被銷燬之前刷新緩衝區。

+0

最佳答案!簡潔而優雅! – xmllmx 2013-02-06 17:41:42