Подтвердить что ты не робот

С++ bool возвращает 0 1 вместо true false

Я перегрузил equals (включая == и! =), который проверяет, равны ли два объекта, а затем возвращает логическое значение.

К сожалению, он печатает 0 или 1. Я знаю, что это правильно, но я не могу понять, как заставить его печатать true или false для удобства чтения.

Я даже пробовал:

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

return false;

Однако С++ достаточно упрям ​​для вывода 0 или 1.

Любая помощь будет оценена.

Изменить - печать выполнена:

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

Требуемый вывод

a == b истинно

4b9b3361

Ответ 1

Вы можете использовать std::boolalpha:

Устанавливает флаг формата boolalpha для потока str.

Когда установлен флаг формата boolalpha, значения bool вставляются/извлекаются как их имена: true и false вместо интеграла значения.

Этот флаг может быть не установлен с манипулятором noboolalpha.

Флаг boolalpha не установлен в стандартных потоках при инициализации.

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

или

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

Ответ 2

Вам нужно использовать std::boolalpha для печати true/false:

#include <iostream>

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

Ответ 3

Вам нужно использовать std::boolalpha:

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

Ответ 4

Если вам нужно сделать это за пределами потока <<, это простое трехмерное выражение:

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