如何比较C ++中的两个Ostream对象以保持平等?
-
29-09-2019 - |
题
我在课堂上超载了左移动运算符,输出工作正常,因此,例如,当我有一条cout << obj的行时;我将输出由逗号分开的字段。
ostream& operator<<(ostream& output, const MyClass& obj)
{
output << obj.field1 << ", " << obj.field2;
return output;
}
我想为此操作编写一个测试用例,但我不知道如何将返回的结果与CXXTEST的预期结果进行比较。我尝试了以下操作,但它无效:
TS_ASSERT_EQUALS(cout << "1, 50.0", cout << obj);
我是否应该使用其他CXXTEST操作或更改TS_ASSERT_EQUELS中的参数传递机制?
请注意,当我输出以下行时,我会得到相同的结果:
cout << obj;
cout << "1, 50.0";
注意:由于TS_ASSERT_EQUALS失败,我尝试编译程序时会出现一堆编译器错误。
解决方案
即使它确实编译了,您基本上是在比较 cout
与自己...
尝试写作两个截然不同的 std::stringstream
s,提取其弦值,并比较它们。
如果您还需要测试Ostream标志,请定义比较功能并使用 TS_ASSERT_RELATION
.
不隶属于 StackOverflow