affichage de booléen

affichage de booléen - C++ - Programmation

Marsh Posté le 02-02-2003 à 02:43:52    

Salut,  
y a t'il un moyen simple en C++ pour que les booléens soient affichées comme des string "true" et "false" avec l'instruction cout << a avec a un bool.
 
Merci


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
Reply

Marsh Posté le 02-02-2003 à 02:43:52   

Reply

Marsh Posté le 02-02-2003 à 06:42:12    

Code :
  1. const char* textual(bool b){
  2. return b ? "true" : "false" ;
  3. }
  4. cout << textual(true);


 
J'aurais bien fait

Code :
  1. ostream& operator << (ostream& os, bool b){
  2. return os << textual(b);
  3. }
  4. cout << true ;

Mais chez moi cette surcharge est déjà définie pour un bool.
Je me demande pourquoi d'ailleurs.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 02-02-2003 à 07:10:55    

:non:  

Code :
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.   cout << "++Taz a raison : " << boolalpha << true << '\n'
  6.        << "Musaran a tort : " << noboolalpha << true << '\n';
  7. }

 :p

Reply

Marsh Posté le 02-02-2003 à 13:17:49    

Taz, quand je fais ca, il me met une erreur à la compilation:
 
booltest.cpp: In function `int main()':
booltest.cpp:10: `boolalpha' undeclared (first use this function)
booltest.cpp:10: (Each undeclared identifier is reported only once
booltest.cpp:10: for each function it appears in.)
 
Ca veut dire quoi ?


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
Reply

Marsh Posté le 02-02-2003 à 13:36:06    

quel compilateur?
 
ça dépend de l'implémentation de ta librairie standard, normalement <iostream> devrait suffire, sinon tu peux essayer <iomanip> voir <ios>....
 
 
ou alors c'est à moi que ça apprendra de pas compiler les exemples que je donne  :D


Message édité par Taz le 02-02-2003 à 13:52:14
Reply

Marsh Posté le 02-02-2003 à 14:08:59    

j'utilise gcc 2.95.3
Ca change rien avec iomanip et il ne connait pas ios !


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
Reply

Marsh Posté le 02-02-2003 à 14:12:18    

arghhhhhhhh, faut dire que le C++ a un peu bougé depuis. je fais une recherche. fais un "grep -r boolalpha /usr/include/" pour voir
 
 
essaye ios_base::boolalpha?


Message édité par Taz le 02-02-2003 à 14:13:18
Reply

Marsh Posté le 02-02-2003 à 14:21:36    

ca marche pas l'option -r avec grep
et pour ios_base::boolalpha je dois faire quoi exactement ? (je débute en C hein !)


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
Reply

Marsh Posté le 02-02-2003 à 14:24:16    

ben tu préfixes les "boolaplha" par "ios_base::" et commende po à mélanger C et C++


Message édité par Taz le 02-02-2003 à 14:24:36
Reply

Marsh Posté le 02-02-2003 à 14:36:47    

bon, ben ca marche pas non plus. Tant pis, je demanderai au prof.
Merci quand même.


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
Reply

Marsh Posté le 02-02-2003 à 14:36:47   

Reply

Marsh Posté le 02-02-2003 à 14:41:30    

c'est bizarre tout ça, je fais des vérification...

Reply

Marsh Posté le 02-02-2003 à 14:46:32    

je suis formel, ça doit etre dans iostream, sinon dans iomanip ou dans tout autre fichier incluant <ios>
 
essaye <ios>
 
tu peux tenter <bits/ios_base.h> mais pas standard, depend de l'implémenation

Reply

Marsh Posté le 02-02-2003 à 14:47:40    

boolalpha n'existait pas dans la lib c++ de gcc 2.95.3 (faut vérifier mais j'en suis presque sûr)
par contre c'est bon avec gcc 3
 

Reply

Marsh Posté le 02-02-2003 à 14:48:42    

++Taz a écrit :

je suis formel, ça doit etre dans iostream, sinon dans iomanip ou dans tout autre fichier incluant <ios>
 
essaye <ios>
 
tu peux tenter <bits/ios_base.h> mais pas standard, depend de l'implémenation  


dans iomanip

Reply

Marsh Posté le 02-02-2003 à 14:50:03    

gloop a écrit :


dans iomanip


déjà proposé mais apparemment ça ne passe pas

Reply

Marsh Posté le 02-02-2003 à 14:50:23    

++Taz a écrit :

:non:  

Code :
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.   cout << "++Taz a raison : " << boolalpha << true << '\n'
  6.        << "Musaran a tort : " << noboolalpha << true << '\n';
  7. }

 :p  


 
pour les flags faut utiliser setf (boolalpha) il me semble ?

Reply

Marsh Posté le 02-02-2003 à 14:56:31    

spa des flags c'est des modificateurs (iomanip pardi), au meme tire qui endl, flush et ends
 
je viens de tester, le code que j'ai donné compile parfaitment sur mon g++ 3.2

Reply

Marsh Posté le 02-02-2003 à 15:02:36    

bon, ben ca veut dire que boolalpha ne marche pas sous g++2.95 alors.
 
Je l'ai fait avec le code de Musaran. Ca marche mais c'est moins pratique.  
Merci quand même.  :jap:


Message édité par deltaden le 02-02-2003 à 15:03:08

---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
Reply

Marsh Posté le 02-02-2003 à 15:09:15    

http://minilien.com/?nth48kgKHL
 
arg²........


Message édité par Taz le 02-02-2003 à 15:14:03
Reply

Marsh Posté le 02-02-2003 à 15:36:15    

bon, ben maintenant c'est clair pourquoi ca marche pas ! :(


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
Reply

Marsh Posté le 02-02-2003 à 16:30:26    

Tiens, VC++ 6 etait conforme a la norme lui ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 02-02-2003 à 16:52:06    

HelloWorld a écrit :

Tiens, VC++ 6 etait conforme a la norme lui ...
 


pour une fois  :D

Reply

Marsh Posté le 03-02-2003 à 09:35:14    

Je connaissais pas, je sais maintenant pourquoi la surcharge bool existe.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed