2009-10-28 2 views

Répondre

24

Oui, vous pouvez le régler avec ios::setstate, comme ceci:

#include <iostream> 
#include <ios> 

int main() 
    { 
    std::cout << "Hi\n"; 

    std::cout.setstate(std::ios::failbit); 

    std::cout << "Fail!\n"; 
    } 

La deuxième sortie ne sera pas produit parce que cout est dans l'état a échoué.

(Une exception semble plus propre pour moi, mais YMMV)

+0

Il fonctionne également pour les flux d'entrée comme demandé. –

+0

Oui, les deux flux d'entrée et de sortie sont dérivés de ios et ios_base –

+7

Je pense que la définition de 'failbit' est une approche très valide pour signaler les erreurs de streaming car le code client peut utiliser le même' if (in >> val) {/ * succès * /} 'idiome qu'ils peuvent utiliser pour les types de base. –

Questions connexes