C++ 自定义流

C++ custom stream

提问人:M Qwadezo 提问时间:3/20/2021 最后编辑:M Qwadezo 更新时间:3/20/2021 访问量:222

问:

如何在 C++ 中实现自己的自定义流?

为什么?

我想使用有线连接将数据从一个微控制器发送到另一个微控制器,我认为自定义流是最直观的方式。

例:

#include "myStream.h"

int main()
{
  myStream << "Hello world!";
  return 0;
}

编辑:

溶液:

class Stream
{
private:
  // members
public:
  Stream() {}
  friend Stream& operator<<(Stream& stream, const Whatever& other);
};

Stream& operator<<(Stream& stream, const Whatever& other)
{
  // do something
  return stream;
}
C++ 微控制器 IOSTREAM COUT OSTREAM

评论

1赞 szatmary 3/20/2021
这只是操作员过载。
0赞 IWonderWhatThisAPIDoes 3/20/2021
如果您希望它与 std 兼容(以允许像 ),请从这里开始:stackoverflow.com/questions/772355/...endl
0赞 user253751 3/20/2021
@szatmary 实际上不是,如果你想使用所有现有的运算符<<适用于 ostream 和 ofstream 和 ostringstream 的重载。
1赞 Ingo Mi 3/20/2021
什么是“有线连接”?是LAN线,是USB线,还是PIO线?
1赞 user253751 3/20/2021
@Ivanovic“一个微控制器到另一个微控制器”可能意味着SPI/I2C

答:

2赞 tadman 3/20/2021 #1

如果你看一是如何工作的,这只是一个流对象和你想发送到它的各种东西的重载情况。没什么特别的,它只是读起来很好,但你可以使用或任何你想要的东西。operator<<<<+

评论

0赞 M Qwadezo 3/20/2021
当我尝试重载时,出现错误operator<<error: invalid operands of types ‘Stream()’ and ‘int’ to binary ‘operator<<’
1赞 tadman 3/20/2021
值得用可以重现该问题的代码打开一个新问题。在结束之前,您可能需要回答一些其他问题。
0赞 user253751 3/20/2021
@tadman 实际上,您的想法不允许标准库的所有现有流功能都起作用。可以制作自己的流,像 ofstream/ostringstream/etc 一样自动工作,因此您可以将整数作为十进制写入其中,设置格式选项等。
0赞 tadman 3/20/2021
@user253751 您可以制作自己完全独立的“流”系统,也可以利用现有的“流”系统并制作一个与流兼容的系统。这两种方法都有其实用性。我将“自定义流”解释为不兼容,但独立。