1

我有一个对象覆盖流运算符 << 以充当字符串流以使控制台打印变得容易。

cout << obj << endl;

我想通过将字符串输出与预期字符串进行比较来在单元测试中测试此功能。我目前通过以下方式完成此操作:

stringStream ss;
ss << obj;
string objStr = ss.str();

EXPECT_EQ(objStr, "expected string output");

这不是特别可读,当然也不简洁。有没有更简单、更短、更简单的方法来获取 obj 的字符串表示形式?

4

1 回答 1

2

您可以编写一个小型通用实用程序函数来为您做这件事:

#include <utility>
#include <string>
#include <sstream>

template<typename T>
std::string make_string(T const& o)
{
    std::stringstream ss;
    ss << o;
    return ss.str();
}

并以这种方式使用它:

EXPECTED_EQ(make_string(obj), "expected string output");
于 2013-05-29T18:34:57.783 回答