【问题标题】:How can I compare two ostream objects in C++ for equality?如何比较 C++ 中的两个 ostream 对象是否相等?
【发布时间】:2011-05-05 19:09:17
【问题描述】:

我在课堂上重载了左移运算符并且输出工作正常,例如,当我有一行说 cout

 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_EQUALS 中的参数传递机制?

请注意,当我输出以下几行时,我会得到相同的结果:

 cout << obj;
 cout << "1, 50.0";

注意:当我尝试编译程序时,由于 TS_ASSERT_EQUALS 失败,我得到了一堆编译器错误。

【问题讨论】:

    标签: c++ operator-overloading ostream cxxtest


    【解决方案1】:

    即使它确实编译了,你也基本上是在将 cout 与它自己进行比较......

    尝试写入两个不同的std::stringstreams,提取它们的字符串值,然后比较它们。

    如果您还需要测试 ostream 标志,请定义一个比较函数并使用TS_ASSERT_RELATION

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-11
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      相关资源
      最近更新 更多