使用流将对象转换为字符串

时间:2013-05-29 18:29:41

标签: c++ unit-testing tdd stringstream

我有一个覆盖流操作符的对象<<充当字符串流,使控制台打印变得容易。

cout << obj << endl;

我想通过比较字符串输出和期望的字符串来在单元测试中测试此功能。我目前通过以下方式实现这一目标:

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

EXPECT_EQ(objStr, "expected string output");

这不是特别可读,它肯定不简洁。有没有更简单,更简单,更简单的方法来获取obj的字符串表示?

1 个答案:

答案 0 :(得分: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");