出于教育目的,我想创建一个ostream和流缓冲区来做:
做<< myVar时修复endians;
存储在deque容器中而不是使用std:cout或写入文件
记录额外的数据,例如我做了多少次<<,我做了多少次.write,我写的字节数和flush()的次数.但我不需要所有的信息.
我尝试过载,但失败的可怕.我试着通过写入来重载
ostream& write( const char* s, streamsize n )
在我的basic_stringstream2类中(我复制粘贴basic_stringstream到我的cpp文件并修改它)但代码保持使用basic_ostream.我查看了代码,看起来我需要重载xsputn(这个页面上没有提到http://www.cplusplus.com/reference/iostream/ostream)但是我还需要重载多少?以及如何构建我的类(它需要继承什么等)?
规范方法包括定义自己的streambuf.你应该看看:
Angelika LAnger关于IOStreams派生的文章
James Kanze关于过滤streambufs 的文章
boost.iostream用于应用程序的示例
对于A + C)我认为你应该看一下facets,它们会修改对象作为字符的写法.您可以在此处存储统计信息以及流式传输对象的次数.看看如何在使用STL流时格式化我自己的对象?举个例子.
对于B)您需要创建自己的streambuf并将您的ostream连接到该缓冲区(构造函数参数).查看Luc的链接 +获取新的streambuf类.总之,你需要为ostream(最小)实现这个:
溢出(放一个字符或刷新缓冲区)(链接)
xsputn(将一个char数组放到缓冲区)(链接)
同步(链接)