如何从标准流中获取自己的流?

时间:2011-06-27 08:51:28

标签: c++ iostream

如何从标准流中派生自己的流?

在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 ++程序。 感谢。

3 个答案:

答案 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)