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

C++ bool returns 0 1 instead of true false

本文关键字:true false bool 返回 c++      更新时间:2023-10-16

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

不幸的是,它输出0或1。我知道这是正确的,但我不知道如何使它打印为真或假,以提高可读性。

我甚至试过:

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

但是,c++非常顽固,会输出0或1。

如有任何帮助,不胜感激。

编辑-打印完成:

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

期望输出

a == b为真

您可以使用std::boolalpha:

为字符串流设置boolalpha格式标志。

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

这个标志可以用noboolalpha操纵符取消设置。

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

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

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

您需要使用std::boolalpha:

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

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

#include <iostream>
int main()
{
  std::cout << std::boolalpha << true << std::endl;
}

直接修复

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

这样就覆盖了它,而不需要重复std::boolalpha

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

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

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