我正在使用std :: ofstream进行跟踪输出。
由于某些原因,有时我想将已附加到std :: ofstream末尾(尚未刷新或关闭)的内容复制到另一个std :: ofstream中;
您是否考虑过实现此目标的任何方法?
谢谢
我正在使用std :: ofstream进行跟踪输出。
由于某些原因,有时我想将已附加到std :: ofstream末尾(尚未刷新或关闭)的内容复制到另一个std :: ofstream中;
您是否考虑过实现此目标的任何方法?
谢谢
Boost.Iostreams 中的 Tee 过滤器可以将输出流分成两个。
下面是一个例子,灵感来自 Johannes Schaub 在他的回答 这里 中所给出的例子。
#include <sstream>
#include <iostream>
#include <boost/iostreams/stream.hpp>
#include <boost/iostreams/tee.hpp>
int main()
{
namespace io = boost::iostreams;
typedef io::tee_device<std::ostream, std::stringstream> TeeDevice;
typedef io::stream<TeeDevice> TeeStream;
std::stringstream ss;
TeeDevice teeDevice(std::cout, ss);
TeeStream tee(teeDevice);
tee << "Hello World\n" << std::flush;
std::cout << "ss: " << ss.str() << "\n";
}
ss.str()
返回一个空字符串。我不知道这是否是预期行为。