C bool 返回 0 1 而不是 true false

新手上路,请多包涵

我重载了 equals(包括 == 和 !=),它检查两个对象是否相等,然后返回一个布尔值。

不幸的是,它打印的是 0 或 1。我知道它是正确的,但为了便于阅读,我无法弄清楚如何让它打印 true 或 false。

我什至尝试过:

 if (a.equals(b))
{
    return true;
}

return false;

但是,C++ 很顽固,可以输出 0 或 1。

任何帮助,将不胜感激。

编辑 - 打印完成:

 cout << "a == b is " << (a == b) << endl;

所需的输出是

a == b 为真

原文由 xBlue 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

您可以使用 std::boolalpha

为 str 流设置 boolalpha 格式标志。

当设置 boolalpha 格式标志时,bool 值作为它们的名称插入/提取:true 和 false 而不是整数值。

可以使用 noboolalpha 操纵器取消设置此标志。

boolalpha 标志未在初始化时在标准流中设置。

 std::cout.setf(std::ios::boolalpha);
std::cout << true;

或者

std::cout << std::boolalpha << true;

原文由 Luchian Grigore 发布,翻译遵循 CC BY-SA 3.0 许可协议

这个直接修复

std::cout << std::boolalpha << "a == b is " << (a == b) << '\n';

有了这个,它涵盖了它一般而不重复 std::boolalpha

 std::cout.setf(std::ios::boolalpha);

原文由 Kenny Nelcon 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题