如何将ostream对象重定向到临时缓冲区?

时间:2011-08-28 14:57:51

标签: c++ unit-testing window iostream

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

1 个答案:

答案 0 :(得分:16)

您可以将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");
}