2012-06-18 5 views
42

En caso de ifstream en C++, ¿en qué condiciones están establecidas las banderas failbit y badbit?C++ ifbit failbit y badbit

+5

http://cplusplus.com/reference/iostream/ios/fail/ – BoBTFish

+4

@Jake ¿Leyó la documentación? –

Respuesta

49

Según cplusplus.com:

failbit se fija generalmente por una operación de entrada cuando el error se relaciona con la lógica interna de la operación en sí, por lo que otras operaciones en la corriente pueden ser posibles. Mientras que badbit se establece generalmente cuando el error implica la pérdida de integridad de la secuencia, que es probable que persista incluso si se realiza una operación diferente en la secuencia. badbit se puede verificar de forma independiente llamando a la función miembro mal.

En palabras sencillas , si se obtiene un número cuando esperar para recuperar una carta, es failbit. Si se produce un error grave , lo que interrumpe la capacidad de lectura de la secuencia en absoluto - es un badbit.

Excepto las banderas mencionadas, hay una tercera muy similar - eofbit. Puede comprobar el estado usando varias funciones: ios::fail, ios::good y ios::bad

Y usted puede familiarizarse con iostream library al recurso de MSDN también.

Finalmente, si la búsqueda de la solución correcta de cómo manejar todos los bits de error y excepciones al leer el archivo (o acceder a algún archivo o directorio), le recomiendo que lea un muy amplio y bien -artículo escrito "Reading files in C++ using ifstream: dealing correctly with badbit, failbit, eofbit, and perror()", al final del cual encontrará algunos Ideal solutions. El artículo vale la pena leer de hecho.

+12

Gracias por mencionar mi artículo :-). –

+0

@ Jan-PhilipGehrcke No puedo abrir los enlaces anteriores. – Orient

+0

Sí, desafortunadamente. Por favor, use la caché de Google. – gahcep