6
我有一个C++代码,它有很多接收ostream作为参数的函数。我想单元测试这些函数,因为我必须在执行到函数后验证ostream对象数据。我可以将输出流重定向到一个文件,但我想检查是否可以创建一个临时缓冲区,并将输出流重定向到缓冲区并从该缓冲区读取。如何将ostream对象重定向到临时缓冲区?
我有一个C++代码,它有很多接收ostream作为参数的函数。我想单元测试这些函数,因为我必须在执行到函数后验证ostream对象数据。我可以将输出流重定向到一个文件,但我想检查是否可以创建一个临时缓冲区,并将输出流重定向到缓冲区并从该缓冲区读取。如何将ostream对象重定向到临时缓冲区?
您可以在内存中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");
}
如果你想冲洗后,再用'buf',你可以用'buf.str(“”)复位; buf.clear()' –