С++ 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 истинно
Ответы
Ответ 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";