【问题标题】:how to redirect ostream object to a temporary buffer?如何将 ostream 对象重定向到临时缓冲区?
【发布时间】:2011-08-28 14:57:50
【问题描述】:

我有一个 C++ 代码,它有很多接收 ostream 作为参数的函数。我想对这些函数进行单元测试,因为我必须在执行到函数后验证 ostream 对象数据。我可以将输出流重定向到文件,但我想检查是否可以创建临时缓冲区并将输出流重定向到缓冲区并从该缓冲区读取。

【问题讨论】:

    标签: c++ unit-testing window iostream


    【解决方案1】:

    您可以将std::stringstream 用作内存中的std::ostream

    #include <iosfwd>
    #include <sstream>
    #include <cassert>
    
    void my_func(std::ostream& out) {
      out << "test";
    }
    
    int main() {
      std::ostringstream buf;
      my_func(buf);
      assert(buf.str() == "test");
    }
    

    【讨论】:

    • 如果你想在刷新后重用buf,你可以用buf.str(""); buf.clear()重置它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    相关资源
    最近更新 更多