Фильтр Tee из Boost.Iostreams может разделить выходной поток на два.
Вот пример, вдохновленный примером, данным ЙоханнесомШауб в своем ответе здесь .
#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()
возвращает пустую строку.Я не знаю, является ли это ожидаемым поведением.