以前有很多关于将stdout / stderr重定向到文件的问题。有没有一种方法可以将stdout / stderr重定向到字符串?
3 回答
蝴蝶不菲
TA贡献1810条经验 获得超4个赞
是的,您可以将其重定向到std::stringstream:
std::stringstream buffer;
std::streambuf * old = std::cout.rdbuf(buffer.rdbuf());
std::cout << "Bla" << std::endl;
std::string text = buffer.str(); // text will now contain "Bla\n"
您可以使用简单的防护类来确保始终重置缓冲区:
struct cout_redirect {
cout_redirect( std::streambuf * new_buffer )
: old( std::cout.rdbuf( new_buffer ) )
{ }
~cout_redirect( ) {
std::cout.rdbuf( old );
}
private:
std::streambuf * old;
};
- 3 回答
- 0 关注
- 1037 浏览
添加回答
举报
0/150
提交
取消