C ++ bool возвращает 0 1 вместо true false - PullRequest
24 голосов
/ 24 ноября 2011

У меня перегружено значение 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 верно

Ответы [ 4 ]

46 голосов
/ 24 ноября 2011

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

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

Когда установлен флаг формата boolalpha, значения bool вставлены / извлечены как их имена: истина и ложь вместо целого значения.

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

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

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

или

std::cout << std::boolalpha << true;
6 голосов
/ 24 ноября 2011

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

#include <iostream>

int main()
{
  std::cout << std::boolalpha << true << std::endl;
}
6 голосов
/ 24 ноября 2011

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

cout << boolalpha << yourthing() << endl;
0 голосов
/ 14 ноября 2017

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

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