Maison >développement back-end >C++ >Pourquoi `stringstream >>` met-il à zéro la variable cible en cas d'échec de l'extraction dans C 11 et versions ultérieures ?
` Mettre à zéro la variable cible en cas d'échec de l'extraction dans C 11 et versions ultérieures ? " />
Dans le passage cité du "TC PL, 3e édition" de Stroustrup, l'auteur déclare que la valeur de v devrait rester inchangé si l'opération d'extraction échoue. Cependant, un exemple contredit cette affirmation, car v est mis à zéro lorsque l'opération stringstream >> échoue.
Explication du comportement contradictoire
La clé pour comprendre cette apparente contradiction réside dans le comportement différent de l'opérateur d'extraction >> 🎜>
Avant C 11
Avant C 11, >> utilisait un mécanisme d'analyse de style scanf. Lorsque l'extraction échouait, il laissait la valeur de v inchangée et définissait l'indicateur failbit.Depuis C 11
Avec C 11, >> est passé à l'utilisation de la facette std::num_get pour analyser l'entrée conformément à la mise à jour. spécification, si l'extraction échoue :Exemple d'explication de sortie
Dans l'exemple fourni :Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!