basic_streambuf函数如何溢出和溢出
问题描述:
我正在阅读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函数如何溢出和溢出
答
基本想法很简单。 underflow
用于输入流。当输入缓冲区中没有数据时,调用underflow
以从实际源(例如文件或套接字)读取数据,以至少部分地重新填充缓冲区。
overflow
几乎恰恰相反 - 当缓冲区已满时,overflow
被称为将数据写入相关文件或套接字或其他任何内容。它也被称为在输出流被销毁之前刷新缓冲区。
+0
最佳答案!简洁而优雅! – xmllmx 2013-02-06 17:41:42
这些函数在制作自己的streambuf时使用。该标准提供了攻击文件或字符串的流缓冲区。例如,我已将一个附加到列表框中,以便在看到换行符时,写入“cout”或“cerr”的任何消息最终显示为列表项。我不得不重写'overflow()'来实现这一点。 – 2012-04-22 05:22:44