- std::ios::eofbit : la fin du flux a été atteinte,
- std::ios::badbit : une erreur hardware est survenue,
- std::ios::failbit : erreur de format.
Ce que je comprend pas c'est comment un std::istream peu faire
la distinction entre la fin du flux et une erreur hardware,
sachant qu'il utilise un std::streambuf dont les fonctions
d'extraction n'ont qu'un type d'erreur (traits_type::eof()).
Comment le std::istream sait-il s'il faut mettre à 1 son
eofbit ou son badbit ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Bourguet
Sylvain Togni writes:
Les std::iostream ont 3 bits d'états :
- std::ios::eofbit : la fin du flux a été atteinte, - std::ios::badbit : une erreur hardware est survenue, - std::ios::failbit : erreur de format.
Ce que je comprend pas c'est comment un std::istream peu faire la distinction entre la fin du flux et une erreur hardware, sachant qu'il utilise un std::streambuf dont les fonctions d'extraction n'ont qu'un type d'erreur (traits_type::eof()).
Comment le std::istream sait-il s'il faut mettre à 1 son eofbit ou son badbit ?
Si le streambuf jette des exceptions.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
- std::ios::eofbit : la fin du flux a été atteinte,
- std::ios::badbit : une erreur hardware est survenue,
- std::ios::failbit : erreur de format.
Ce que je comprend pas c'est comment un std::istream peu faire
la distinction entre la fin du flux et une erreur hardware,
sachant qu'il utilise un std::streambuf dont les fonctions
d'extraction n'ont qu'un type d'erreur (traits_type::eof()).
Comment le std::istream sait-il s'il faut mettre à 1 son
eofbit ou son badbit ?
Si le streambuf jette des exceptions.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
- std::ios::eofbit : la fin du flux a été atteinte, - std::ios::badbit : une erreur hardware est survenue, - std::ios::failbit : erreur de format.
Ce que je comprend pas c'est comment un std::istream peu faire la distinction entre la fin du flux et une erreur hardware, sachant qu'il utilise un std::streambuf dont les fonctions d'extraction n'ont qu'un type d'erreur (traits_type::eof()).
Comment le std::istream sait-il s'il faut mettre à 1 son eofbit ou son badbit ?
Si le streambuf jette des exceptions.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
kanze
Sylvain Togni wrote:
Les std::iostream ont 3 bits d'états :
- std::ios::eofbit : la fin du flux a été atteinte, - std::ios::badbit : une erreur hardware est survenue, - std::ios::failbit : erreur de format.
Ce que je comprend pas c'est comment un std::istream peu faire la distinction entre la fin du flux et une erreur hardware, sachant qu'il utilise un std::streambuf dont les fonctions d'extraction n'ont qu'un type d'erreur (traits_type::eof()).
Comment le std::istream sait-il s'il faut mettre à 1 son eofbit ou son badbit ?
Il y a deux cas où istream positionne bad_bit :
-- si rdbuf() renvoie un pointeur null, ou -- si une fonction du streambuf retourne avec une exception.
Si sgetc retourne avec EOF, c'est eofbit qui est positionné (qui peut déclencher le positionnement de failbit, mais pas forcément).
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Sylvain Togni wrote:
Les std::iostream ont 3 bits d'états :
- std::ios::eofbit : la fin du flux a été atteinte,
- std::ios::badbit : une erreur hardware est survenue,
- std::ios::failbit : erreur de format.
Ce que je comprend pas c'est comment un std::istream peu faire
la distinction entre la fin du flux et une erreur hardware,
sachant qu'il utilise un std::streambuf dont les fonctions
d'extraction n'ont qu'un type d'erreur (traits_type::eof()).
Comment le std::istream sait-il s'il faut mettre à 1 son
eofbit ou son badbit ?
Il y a deux cas où istream positionne bad_bit :
-- si rdbuf() renvoie un pointeur null, ou
-- si une fonction du streambuf retourne avec une exception.
Si sgetc retourne avec EOF, c'est eofbit qui est positionné (qui
peut déclencher le positionnement de failbit, mais pas
forcément).
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
- std::ios::eofbit : la fin du flux a été atteinte, - std::ios::badbit : une erreur hardware est survenue, - std::ios::failbit : erreur de format.
Ce que je comprend pas c'est comment un std::istream peu faire la distinction entre la fin du flux et une erreur hardware, sachant qu'il utilise un std::streambuf dont les fonctions d'extraction n'ont qu'un type d'erreur (traits_type::eof()).
Comment le std::istream sait-il s'il faut mettre à 1 son eofbit ou son badbit ?
Il y a deux cas où istream positionne bad_bit :
-- si rdbuf() renvoie un pointeur null, ou -- si une fonction du streambuf retourne avec une exception.
Si sgetc retourne avec EOF, c'est eofbit qui est positionné (qui peut déclencher le positionnement de failbit, mais pas forcément).
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34