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
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;
Vous devez utiliser std::boolalpha
:
cout << boolalpha << yourthing() << endl;
Vous devez utiliser std::boolalpha
pour imprimer true/false:
#include <iostream>
int main()
{
std::cout << std::boolalpha << true << std::endl;
}
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";