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

sar*_*jit 6 c++ unit-testing iostream window

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

Fle*_*exo 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");
}
Run Code Online (Sandbox Code Playgroud)