我读过有关 C++ 的自定义流,但似乎人们通常继承自 std::streambuf
、std::istream
和 std: :ostream
。通过检查这些类型的声明,很明显这些是针对字符的:
typedef basic_streambuf<char> streambuf;
The docs确认这一点:
Input stream objects can read and interpret input from sequences of characters.
显然,这是有道理的。我想知道为其他类型实现流的正确方法是什么。我不想允许文本,而是其他形式的二进制输入/输出(我有特定格式)。明显的步骤似乎是继承上面的 basic
变体(basic_streambuf
、basic_istream
和 basic_ostream
)并使用我认为合适的任何类型作为模板参数。我没有找到确认这是正确程序的证据。那么,是吗?
编辑澄清:我有一个名为 Segment 的类。这些流将发送/接收段,并且仅通过 WiFi 连接发送/接收段,因为这些在通信协议(protocol)中使用。发送任何其他内容都会破坏协议(protocol)。这意味着流不能支持其他类型。
最佳答案
这不是关于从 std::basic_*
继承的问题的答案与非 char
类型。但是根据评论并根据您的申请,我质疑是否需要为您的 Segment
重新实现整个标准流机制。类型,当您可以简单地使用流运算符定义一个类时:
class SegmentStream
{
public:
SegmentStream& operator<< ( const Segment& s );
}
更好的是,您可以通过定义方法来阐明您的代码 send
和 recv
而不是 >>, <<
.
或者您可以解释为什么这还不够,以及为什么您特别想使用标准流?
关于c++ - 自定义类型的自定义 C++ 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32918198/