KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm working on getting some legacy code under unit tests and sometimes the only way to sense an existing program behavior is from the console output. I see lots of examples online for how to redirect stdout to another file in C++, but is there a way I can redirect it to an in-memory stream so my tests don't have to rely on the disk? I'd like to get anything that the legacy code sends to stdout into a std::string so I can easily .find on the output. Edit The legacy code is so bad that it users a mixture of cout << .. and printf . Here is what I have so far: void TestSuite::setUp(void) { oldStdoutBuf = std::cout.rdbuf(); std::cout.rdbuf(consoleOutput.rdbuf()); } void TestSuite::tearDown(void) { std::cout.rdbuf(oldStdoutBuf); } The problem is that this does not capture output using printf. I would like something that gets both. Any ideas?
Tags (comma-separated)
Save Edits
Cancel