为了账号安全,请及时绑定邮箱和手机立即绑定

将stdout / stderr重定向到字符串

将stdout / stderr重定向到字符串

C++ C
慕尼黑的夜晚无繁华 2019-12-25 10:39:19
以前有很多关于将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;

};


查看完整回答
反对 回复 2019-12-25
  • 3 回答
  • 0 关注
  • 1037 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信