用于自定义类型的自定义c++流



我读过关于c++的自定义流,但似乎通常人们继承std::streambuf, std::istreamstd::ostream。通过检查这些类型的声明,可以清楚地看出它们是用于字符的:

typedef basic_streambuf<char>        streambuf;

文档确认:

输入流对象可以从序列中读取和解释输入字符。

显然,这是有道理的。我想知道为其他类型实现流的正确方法是什么。我不希望允许文本,但其他形式的二进制输入/输出(我有特定的格式)。显而易见的步骤似乎是继承上面的basic变体(basic_streambufbasic_istreambasic_ostream),并使用我认为合适的任何类型作为模板参数。我没能确定这是正确的程序。是吗?

编辑澄清:我有一个类称为片段。这些流将发送/接收段,并且仅通过WiFi连接发送/接收段,因为这些是在通信协议中使用的。发送其他信息会破坏协议。这意味着流不支持其他类型。

这不是从std::basic_*继承非char类型的问题的答案。但是根据评论和给定您的应用程序,我质疑是否需要为您的Segment类型重新实现整个标准流机制,当您可以简单地使用流操作符定义一个类时:

class SegmentStream
{
public:
    SegmentStream& operator<< ( const Segment& s );
}

更好的是,你可以通过定义方法sendrecv而不是>>, <<来澄清你的代码。或者你可以解释为什么这是不够的,为什么你特别想使用标准流?

相关内容

  • 没有找到相关文章

最新更新