连接两个流函数 c++

Connecting two streaming functions c++

我有两个功能:

获取 (std::ostream* os) 和 放 (std::istream& 是)

get 函数的方式是,它在下面有多个流,从中收集数据并通过输出流将其发送出去 os。

另一方面,将输入流中的数据写入多个流,最终存储数据。

现在,我想编写一段代码来使用 GET 获取数据并对该数据执行 PUT。

但是,我不确定如何写入 istream 或如何实现这段连接器代码。我刚开始使用流,我也试图理解它们。任何帮助将不胜感激。

谢谢, 塞图

看来,您想创建一些东西,将写入 Get()std::ostream 的数据传送到 Put()std::istream。为此,您需要编写一个合适的流,它可能需要处理连接多个线程。如果从 Get() 返回后从 Get() 写入的流中读取数据就足够了,您可以只写入 std::ostringstream 并使写入的字节可用于 Put()使用 std::istringstream。我假设您想要更直接的联系并描述一般方法。

流的底层机制在流缓冲区中实现,即 classes 从 std::streambuf 派生(或者,如果你想支持其他字符类型,如 wchar_tchar32_t,class 模板 std::basic_streambuf。要覆盖的关键函数是

  • overflow(int_type) 每当流缓冲区的缓冲区已满时调用输出流。
  • sync() 当需要刷新流的缓冲区时调用输出流。
  • underflow() 如果流的缓冲区被耗尽,则为输入流调用。

如何实现处理的细节有点复杂。我写了很多解释创建流缓冲区的各种用途的答案。对于将输出流连接到输入流的流,请查看 this answer.