gpt4 book ai didi

c++ - 如何封装两个流缓冲区

转载 作者:行者123 更新时间:2023-11-28 07:26:19 30 4
gpt4 key购买 nike

std::cout.rdbuf() 非常易于使用。但我希望将字符串打印到控制台并将其写入文件。

所以我想到的是把两个stream buffer封装成一个std::streambuf的派生类,然后传给rdbuf()。这可能吗?

我应该如何实现?

最佳答案

我认为更好的方法是将两个流封装到派生自 std::basic_ostream<...> 的实际流类中.

开始的事情是:

template<class charT, class traits = std::char_traits<charT>>
class basic_binary_stream : public std::basic_osteam<charT>
{
typedef std::basic_ostream<charT> stream_type;
typedef std::char_traits<charT> traits_type;
/* ... */
public:
binary_stream(stream_type& o1, stream_type& o2)
: s1(o1), s2(o2)
{ }

binary_stream& operator<<(int n)
{
s1 << n;
s2 << n;
return *this;
}

/* ... */
private:
stream_type& s1, &s2;
};

using binary_stream = basic_binary_stream<char>;

关于c++ - 如何封装两个流缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18706563/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com