KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'd like to compose two (or more) streams into one. My goal is that any output directed to cout , cerr , and clog also be outputted into a file, along with the original stream. (For when things are logged to the console, for example. After closing, I'd like to still be able to go back and view the output.) I was thinking of doing something like this: class stream_compose : public streambuf, private boost::noncopyable { public: // take two streams, save them in stream_holder, // this set their buffers to `this`. stream_compose; // implement the streambuf interface, routing to both // ... private: // saves the streambuf of an ios class, // upon destruction restores it, provides // accessor to saved stream class stream_holder; stream_holder mStreamA; stream_holder mStreamB; }; Which seems straight-forward enough. The call in main then would be something like: // anything that goes to cout goes to both cout and the file stream_compose coutToFile(std::cout, theFile); // and so on I also looked at boost::iostreams , but didn't see anything related. Are there any other better/simpler ways to accomplish this?
Tags (comma-separated)
Save Edits
Cancel