如何从标准流中派生自己的流?
在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 ++程序。 感谢。
答案 0 :(得分:15)
我认为这个问题有三个层次的答案:
等级1 :这很复杂,特别是如果你是C ++的新手,请立即停止。只有你喜欢冒险,才能继续升级。
等级2 :使用一些可以更轻松地创建流的库。我建议使用Boost.IOStreams库。它使创建自己的流和streambufs更容易。如果您仍不满意,请继续进行3级。
等级3 :您必须从std::streambuf
派生并修改其行为以满足您的需求。然后你必须plug your streambuf
into own stream。
答案 1 :(得分:0)
你能不能再描述一下你自己的流程类应该做些什么?
只是在没有how
的情况下询问what
并不是获得建设性答案的最佳方式。
也许你应该看一下boost::iostream
,因为有一种更简单,更安全的方式来编写自己的iostream
类。
答案 2 :(得分:-7)
别。
iostreams
是一个糟糕的界面。它也缺乏很多功能,性能也很差。