C ++ bool返回0 1而不是true false

时间:2011-11-24 19:24:34

标签: c++ overloading boolean

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

不幸的是,它打印0或1.我知道它是正确的但我无法弄清楚如何为了可读性而打印真或假。

我甚至尝试过:

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

return false;

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

任何帮助都将不胜感激。

编辑 - 完成打印:

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

所需的输出

  

a == b是真的

4 个答案:

答案 0 :(得分:46)

您可以使用std::boolalpha

  

为str流设置boolalpha格式标志。

     

设置boolalpha格式标志时,bool值为   插入/提取作为其名称:true和false而不是integer   值。

     

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

     

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

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

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

答案 1 :(得分:6)

您需要使用std::boolalpha

cout << boolalpha << yourthing() << endl;

答案 2 :(得分:6)

您需要使用std::boolalpha来打印true / false:

#include <iostream>

int main()
{
  std::cout << std::boolalpha << true << std::endl;
}

答案 3 :(得分:0)

如果您需要在流输出<<之外执行此操作,则它是一个简单的三元表达式:

std::string str = (a == b) ? "true" : "false";