我有一个覆盖流运算符 << 的对象,它充当字符串流,使控制台打印变得容易。
cout << obj << endl;
我想通过将字符串输出与预期字符串进行比较来在单元测试中测试此功能。我目前通过以下方式完成此任务:
stringStream ss;
ss << obj;
string objStr = ss.str();
EXPECT_EQ(objStr, "expected string output");
这不是特别可读,当然也不简洁。有没有更简单、更短、更简单的方法来获取 obj 的字符串表示形式?
最佳答案
你可以写一个小的、通用的实用函数来为你做那件事:
#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");
关于c++ - 使用流将对象转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16821314/