猿问

将stdout / stderr重定向到字符串

以前有很多关于将stdout / stderr重定向到文件的问题。有没有一种方法可以将stdout / stderr重定向到字符串?



慕尼黑的夜晚无繁华
浏览 1038回答 3
3回答

蝴蝶不菲

是的,您可以将其重定向到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 {&nbsp; &nbsp; cout_redirect( std::streambuf * new_buffer )&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; : old( std::cout.rdbuf( new_buffer ) )&nbsp; &nbsp; { }&nbsp; &nbsp; ~cout_redirect( ) {&nbsp; &nbsp; &nbsp; &nbsp; std::cout.rdbuf( old );&nbsp; &nbsp; }private:&nbsp; &nbsp; std::streambuf * old;};
随时随地看视频慕课网APP
我要回答