OVH Cloud OVH Cloud

Booléens

9 réponses
Avatar
Etienne Rousee
Bonsoir,

Encore une bizarrerie:
Mes "cout" de booléens ne m'affichent que des 0 ou de 1,
et pourtant , j'ai rajouté le code suivant :

ostream& operator<< (ostream &os, const bool &b)
{
if (b) os << "true";
else os << "false";

return os;
}

--

Etienne

9 réponses

Avatar
Loïc Joly
Bonsoir,

Encore une bizarrerie:
Mes "cout" de booléens ne m'affichent que des 0 ou de 1,
et pourtant , j'ai rajouté le code suivant :

ostream& operator<< (ostream &os, const bool &b)
{
if (b) os << "true";
else os << "false";

return os;
}


Tu n'as pas le droit de définir une surcharge qui existe déjà...

Pour ton problème, essaye plutôt :
cout << boolalpha << true <<false << endl;

--
Loïc

Avatar
Fabien LE LEZ
On Thu, 28 Dec 2006 20:37:50 +0100, Loïc Joly :

Tu n'as pas le droit de définir une surcharge qui existe déjà...


Je peux me tromper, mais il me semble que cette définition est
autorisée, car elle se trouve dans le namespace global, et inutile,
pour la même raison.

Avatar
Etienne Rousee
"Loïc Joly" a écrit ...
Bonsoir,

Encore une bizarrerie:
Mes "cout" de booléens ne m'affichent que des 0 ou de 1,
et pourtant , j'ai rajouté le code suivant :

ostream& operator<< (ostream &os, const bool &b)
{
if (b) os << "true";
else os << "false";

return os;
}


Tu n'as pas le droit de définir une surcharge qui existe déjà...

Pour ton problème, essaye plutôt :
cout << boolalpha << true <<false << endl;


Et VC++6.0 refuse ça.
Il refuse même ceci :
cout << true;
avec le message d'erreur suivant :
operator << is ambiguous

Je sais, pas la peine de me répondre que VC6 est périmé :)

--

Etienne


Avatar
Fabien LE LEZ
On Fri, 29 Dec 2006 12:25:58 +0100, "Etienne Rousee"
:

avec le message d'erreur suivant :
operator << is ambiguous


Avec ou sans ton "operator<<" ?

Avatar
Etienne Rousee
"Fabien LE LEZ" a écrit ...
On Fri, 29 Dec 2006 12:25:58 +0100, "Etienne Rousee"
:

avec le message d'erreur suivant :
operator << is ambiguous


Avec ou sans ton "operator<<" ?


Tu as raison, c'était avec.
Quand je l'enlève, ça compile, mais ça n'affiche pas ce que
je voudrais, c'est à dire "false" ou "true" et non 0 ou 1.

--

Etienne


Avatar
Fabien LE LEZ
On Fri, 29 Dec 2006 18:24:44 +0100, "Etienne Rousee"
:

Quand je l'enlève, ça compile, mais ça n'affiche pas ce que
je voudrais, c'est à dire "false" ou "true" et non 0 ou 1.


Tu veux dire que le code

bool const b= false;
cout << boolalpha << b << endl;

compile bien, mais n'affiche pas le résultat escompté ?

Avatar
Etienne Rousee
"Fabien LE LEZ" a écrit ...
On Fri, 29 Dec 2006 18:24:44 +0100, "Etienne Rousee"
:

Quand je l'enlève, ça compile, mais ça n'affiche pas ce que
je voudrais, c'est à dire "false" ou "true" et non 0 ou 1.


Tu veux dire que le code

bool const b= false;
cout << boolalpha << b << endl;

compile bien, mais n'affiche pas le résultat escompté ?


Oh ! Ah ! Oh ! Je viends de comprendre que boolalpha
n'est pas un nom de variable ! Euréka !
Bon, ça marche, mais comment le contrôle-t-on ?
C'est à dire, existe-t-il bool....... autrechose ?

--

Etienne


Avatar
Fabien LE LEZ
On Fri, 29 Dec 2006 19:39:33 +0100, "Etienne Rousee"
:

C'est à dire, existe-t-il bool....... autrechose ?


Oui.
<http://www.google.com/search?&q=boolalpha%20c%2B%2B&hl=en>

Avatar
Etienne Rousee
"Fabien LE LEZ" a écrit ...
On Fri, 29 Dec 2006 19:39:33 +0100, "Etienne Rousee"
:

C'est à dire, existe-t-il bool....... autrechose ?


Oui.
<http://www.google.com/search?&q=boolalpha%20c%2B%2B&hl=en>


C'est vrai, j'aurais pu penser à y aller voir tout seul.
Merci, Fabien.

--

Etienne