2012-10-15 20 views
7

Eventuali duplicati:
do I need to close a std::fstream?Fa ofstream chiude automaticamente i suoi file?

int main() { 
    ofstream a("a.txt"); 
    a << "A" << endl; 
    //a.close(); 
} 

Questo funziona bene, ma non è necessario chiudere il file alla fine del programma?

+0

vedere questa domanda http://stackoverflow.com/questions/4802494/do-i-need-to-close-a-stdfstream (e anche quello è un duplicato) – Dirk

+0

@Dirk Ho appena cercato ofstream non ifstream , La prossima volta cercherò a grandi linee. Chiudi la mia domanda se lo desideri. – truongnam1996

risposta

16

ofstream chiuderà i file quando viene chiamato il suo distruttore, cioè quando esce dall'ambito. Tuttavia, chiamare il numero close() non causa alcun danno ed esprime le tue intenzioni ai programmatori di manutenzione.

Calling close() permette anche di verificare se il close() ha avuto successo perché è possibile controllare anche la failbit:

http://www.cplusplus.com/reference/iostream/ofstream/close/

4

È necessario chiamare vicino se si desidera controllare il risultato (successo o fallimento).

In caso contrario, il distruttore del flusso tenterà di chiudere il file per conto dell'utente.