【发布时间】:2011-04-16 14:52:38
【问题描述】:
如何捕获将在 C++ 中发送到标准输出的数据?
我在这里找到的:
// This can be an ofstream as well or any other ostream
std::stringstream buffer;
// Save cout's buffer here
std::streambuf *sbuf = std::cout.rdbuf();
// Redirect cout to our stringstream buffer or any other ostream
std::cout.rdbuf(buffer.rdbuf());
std::cout << "Hello!";
// When done redirect cout to its old self
std::cout.rdbuf(sbuf);
std::cout << "STD data: \n";
std::cout << buffer.get();
这行不通。 'Hello' 仍然在'STD data:' 之前输出,并且buffer.get() 返回'-1'。怎么了?
【问题讨论】: