2010-11-14 4 views
3

En lisant accéléré C++, ils donnent un exemple que je ne comprends pas. C'est une boucle while avec condition (cin >> x). À ce stade du script, x a été déclaré comme un double. Je comprends que la boucle s'exécute tant que x reçoit avec succès l'entrée, mais est >> renvoyant un booléen? Je suppose que j'ai juste besoin d'un peu d'aide pour comprendre exactement ce que c'est >> et < < faire .... Aussi pendant que nous sommes sur le sujet, quelle est la différence entre iostream, ios et iomanipEst-ce que les opérandes d'entrée retournent des booléens en C++?

+1

Vous devriez diviser ceci en deux questions. La première partie, décrite dans le titre de la question, est une question, mais tout ce qui suit «Aussi pendant que nous sommes sur le sujet» est une question différente et devrait donc être une question différente. – SingleNegationElimination

Répondre

8

en fait, ils se retournent eux-mêmes , qui est,

std::cin >> foo 

est une expression (avec un effet secondaire) qui se produit à retourner std::cin. Il arrive aussi que iostream s peuvent être convertis en bool, ils sont vrais s'ils sont prêts à recevoir une entrée, ou ont une sortie à fournir, et faux s'ils sont fermés ou à la fin de leurs fichiers respectifs.

+1

Plus précisément, ils sont convertis en 'void *', qui est ensuite converti en 'bool'. Et un flux peut également être évalué à "false" même s'il y a * input * disponible. Si 'foo' est un' int' et que les caractères suivants à extraire ne sont pas numériques, par exemple, le flux sera dans l'état 'fail'. Appelez «effacer» pour réinitialiser. –

Questions connexes