2011-08-28 52 views
6

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

回答

15

您可以在内存中std::ostream使用std::stringstream为:

#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"); 
} 
+0

如果你想冲洗后,再用'buf',你可以用'buf.str(“”)复位; buf.clear()' –

相关问题