2009-07-20 10 views
3

Est-il possible de faire fonctionner un flux personnalisé comme les flux stanadr en ce qui concerne les erreurs? Par défaut, utilisez les bits good/fail/bad/eof plutôt que des exceptions? Les documents boost ne mentionnent que le lancement d'une erreur std :: pour les erreurs de flux et la propagation d'une autre erreur (par exemple, un badalloc pour tenter d'allouer un tampon), mais le code boost ne semble pas les attraper. code d'utilisateur pour les gérer, mais tout mon code existant repose sur les méthodes good(), bad() etc et la méthode clear() dans les cas où il faut réessayer après une erreur.Flux C++ Boost io, gestion des erreurs

+0

Quels documents Boost regardez-vous? –

+0

http://www.boost.org/doc/libs/1_39_0/libs/iostreams/doc/index.html –

+2

Sur http://www.boost.org/doc/libs/1_39_0/libs/iostreams/doc/ guide/exceptions.html # standard_iostreams "Une troisième possibilité aurait été de suivre l'exemple de std :: basic_streambuf et de permettre aux fonctions membres des filtres et des dispositifs de signaler les erreurs en lançant des exceptions ou en renvoyant des indicateurs d'erreur désignés. car cela aurait compliqué les spécifications des différents concepts de Filter et Device et rendu les composants internes de stream_buffer plus difficiles à comprendre et à maintenir. " – akramer

Répondre

1

De http://www.trip.net/~bobwb/cppnotes/lec08.htm

L'état d'erreur peut être définie en utilisant:

vide clair (iostate = 0);

La valeur par défaut de zéro entraîne la définition de ios_base :: goodbit.

clear(); Est donc équivalent à

clear (0);

qui est équivalent à

clair (ios_base :: goodbit);

Notez que ios_base :: goodbit est une valeur non nulle. clear() peut être utilisé pour définir l'un des autres bits en tant que partie du code d'un programmeur pour l'opérateur >>() pour un objet particulier. Par exemple:

si (bad_char) est.clear (ios_base :: badbit); // définir le badbit d'istream

+0

Cela ne répond pas à la question. La question est de savoir si les flux d'E/S [Boost] (http://www.boost.org/) exposent ou non une interface similaire. –

+0

La question telle qu'elle se lisait lorsque je lui ai répondu posait des questions sur l'utilisation d'un flux personnalisé, puis faisait référence aux flux boost. Il ne m'était pas clair s'il s'intéresse seulement aux courants de boost tels qu'ils sont, s'il les a sous-classés lui-même, ou à ses propres ruisseaux personnalisés. – gymbrall

Questions connexes