【发布时间】:2011-06-27 08:51:27
【问题描述】:
如何从标准流派生我自己的流?
C#语言中有Stream类,但是C++的流太复杂了。
我想要这样的东西:
class my_stream : public std::stream
{
// How to derive?
};
void using_a_stream(std::stream* s)
{
*s << "Hello world";
}
void main()
{
std::stream s1;
std::fstream s2("C:\\test.txt");
my_stream s3;
using_a_stream(&s1);
using_a_stream(&s2);
using_a_stream(&s3);
}
注意:代码只是一个示例,可能是无效的 C++ 程序。 谢谢。
【问题讨论】:
-
强烈建议不要公开继承自 STL 类。为什么不能按原样使用该类?
-
@Cody Gray:你所说的对于某些课程是正确的。然而,流和 streambuf 类是通过继承来扩展的。
-
@Cody:我开发了一个库,我应该派生自己的流来替换一些 STL 流。
-
这实际上并没有回答问题。 为什么您需要派生自己的流来替换 STL 流?是的,wilx 是对的:stream 和 streambuf 类实际上是为继承而设计的。但这相当复杂,而且很少有充分的理由。您不需要派生自己的流,因此它使用您自己的名称。
-
它不是 STL 流。 STL 包括容器库、算法库和迭代器,用于连接这两个库。 IOStreams 是完全独立的。我已经相应地编辑了问题。