it-swarm.com.de

C++ - Bool gibt 1 statt true zurück

Ich habe equals (einschließlich == und! =) Überladen, das prüft, ob zwei Objekte gleich sind, und gibt dann einen Boolean zurück.

Leider druckt es 0 oder 1. Ich weiß, dass es korrekt ist, aber ich kann nicht herausfinden, wie es aus Gründen der Lesbarkeit richtig oder falsch gedruckt werden kann.

Ich habe sogar versucht:

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

return false;

C++ ist jedoch hartnäckig genug, um 0 oder 1 auszugeben.

Jede Hilfe wäre dankbar.

Bearbeiten - Drucken ist fertig:

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

Gewünschte Ausgabe ist 

a == b ist wahr

23
xBlue

Sie können std::boolalpha verwenden:

Legt das Flag für das Boolalpha-Format für den str-Stream fest.

Wenn das Flag für das Boolalpha-Format gesetzt ist, sind die bool-Werte als Namen eingefügt/extrahiert: wahr und falsch statt integral Werte.

Dieses Flag kann mit dem Noboolalpha-Manipulator deaktiviert werden.

Das Boolalpha-Flag wird bei der Initialisierung nicht in Standardströmen gesetzt.

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

oder

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

Sie müssen std::boolalpha verwenden:

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

Sie müssen std::boolalpha verwenden, um true/false zu drucken: 

#include <iostream>

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

Wenn Sie dies außerhalb einer Stream-Ausgabe << tun müssen, handelt es sich um einen einfachen ternären Ausdruck:

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