在
sstream
但您可能根本不需要新的流类。现在寻找一个例子
basic_stringstream
源,该类的唯一目的是
-
提供
str
函数(它只调用底层缓冲区的
STR
)
-
在调用基础缓冲区的方法时避免使用其vtable
-
改变
rdbuf
的返回值
basic_stringbuf*
(但这是不必要的,因为
STR
提供)
流类做的很少,而且除了调用类型的底层缓冲区之外,实际上不应该有任何功能。
basic_streambuf
. 例如,我可以这样做:
string str( "Hello, world!" );
stringbuf buf( str ); // subclass of basic_streambuf
iostream pseudo_stringstream( &buf );
// pseudo_stringstream can do anything a stringstream can do.
// (not necessarily with the same syntax)
而且,所有的流都应该继承自
basic_istream
,
basic_ostream
或两者兼而有之。如果流未正确继承,则插入器/提取器函数可能无法工作。这些插入器声明非常好:
operator<<( ostream os, MyData d ); // not a template at all
// templated, but requires correct inheritance:
template< class C > operator<<( basic_ostream<C> os, MyData d );
因此,如果需要iostream行为,则需要实现
基本流苏
并将其连接到
basic_iostream
.
但是,你的实际目标是什么?与通常的迭代器相比,内存支持流的优势是什么,也许还有一些
back_insert_iterator
S?是否要使用与迭代相同的代码进行序列化?您可能希望使流看起来像使用
stream_iterator
,而不是使序列看起来像流。