2012-06-18 10 views
42

In caso di ifstream in C++, in quali condizioni sono impostati i flag failbit e badbit?C++ ifstream failbit e badbit

+5

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

+4

@Jake Hai letto la documentazione? –

risposta

49

Secondo cplusplus.com:

failbit è generalmente fissato da un'operazione di input quando l'errore è stato legato alla logica interna dell'operazione stessa, così altre operazioni sul flusso può essere possibile. Mentre il bitbit viene generalmente impostato quando l'errore comporta la perdita di integrità del flusso, che è probabile che persista anche se viene eseguita un'operazione diversa sul flusso. badbit può essere controllato indipendentemente chiamando la funzione membro cattiva.

In semplici parole, se si ottiene un numero di quando si aspettano di recuperare un lettera, è failbit. Se si verifica un errore grave, che interrompe la possibilità di leggere dallo stream a tutti - è un badbit.

Tranne le bandiere menzionate ce n'è una terza abbastanza simile - eofbit. È possibile controllare lo stato utilizzando diverse funzioni: ios::fail, ios::good e ios::bad

E si può prendere confidenza con iostream library alla risorsa MSDN troppo.

Infine, se si cerca per il corretto soluzione di come gestire tutti i bit di errore e le eccezioni durante la lettura dal file (o l'accesso qualche file o directory) , consiglio vivamente di leggere un molto completo e ben -articolo scritto "Reading files in C++ using ifstream: dealing correctly with badbit, failbit, eofbit, and perror()", al termine del quale troverete alcuni Ideal solutions. L'articolo vale la pena di leggere davvero.

+12

Grazie per aver menzionato il mio articolo :-). –

+0

@ Jan-PhilipGehrcke Non riesco ad aprire i collegamenti sopra. – Orient

+0

Sì, sfortunatamente. Si prega di utilizzare invece la cache di Google. – gahcep

Problemi correlati