Est-ce que l'effet failbit que l'appel ignore sur cin?

Après l'établissement d'un failbit: Lorsque j'appelle cin.clear () et ensuite cin.ignore (), le programme est correct. Et quand j'appelle cin.ignore () et ensuite cin.clear (), l'ignorance semble ne pas fonctionner, pourquoi?

cin.clear() efface la failbit, mais pas cin.ignore() .

cela signifie que, si le stream est dans un état invalide, l'appel de clear() suivi par ignore() réinitialisera l'état à bon, puis ignorera le caractère suivant.

D'un autre côté, appeler ignore() suivi de clear() signifie que ignore() échouera, alors clear() procédera à la réinitialisation de l'état du stream. Donc, dans ce cas, le prochain caractère ne sera pas ignoré.

cin.ignore() ne fait que son travail de consommation de données du stream si cin.good() est true . Si le failbit est défini, alors cin.good() sera false .