web-dev-qa-db-fra.com

C++ bool renvoie 1 au lieu de true false

J'ai surchargé des équivalents (y compris == et! =) Qui vérifie si deux objets sont égaux, puis renvoie un booléen.

Malheureusement, il affiche 0 ou 1. Je sais que cela est correct, mais je ne vois pas comment le faire pour imprimer vrai ou faux à des fins de lisibilité.

J'ai même essayé:

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

return false;

Cependant, C++ est assez obstiné pour générer 0 ou 1.

Toute aide serait appréciée.

Edit - L'impression est terminée:

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

La sortie souhaitée est 

a == b est vrai

23
xBlue

Vous pouvez utiliser std::boolalpha :

Définit l'indicateur de format boolalpha pour le flux str.

Lorsque l'indicateur de format boolalpha est défini, les valeurs bool sont: insérés/extraits comme leurs noms: vrai et faux au lieu d'intégrale valeurs.

Cet indicateur peut être désactivé avec le manipulateur noboolalpha.

L'indicateur boolalpha n'est pas défini dans les flux standard lors de l'initialisation.

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

ou

std::cout << std::boolalpha << true;
46
Luchian Grigore

Vous devez utiliser std::boolalpha:

cout << boolalpha << yourthing() << endl;
6
John Zwinck

Vous devez utiliser std::boolalpha pour imprimer true/false: 

#include <iostream>

int main()
{
  std::cout << std::boolalpha << true << std::endl;
}
6
BЈовић

Si vous devez le faire en dehors d'une sortie de flux <<, il s'agit d'une expression ternaire simple:

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