Penso che le risposte precedenti siano fuorvianti.
fstream
è un oggetto Raii adeguata, fa chiudere automaticamente alla fine del campo di applicazione, e non v'è assolutamente alcun bisogno chiamare close
manualmente quando si chiude alla fine della portata è sufficiente.
In particolare, non è una "best practice" e non è necessario svuotare l'output.
E mentre Drakosha ha ragione che chiamare close
ti dà la possibilità di controllare il bit di fail del flusso, nessuno lo fa, comunque.
In un mondo ideale, è sufficiente chiamare in anticipo stream.exception(ios::failbit)
e gestire l'eccezione che viene generata nel distruttore di fstream
. Ma sfortunatamente le eccezioni nei distruttori sono un concetto rotto in C++, quindi non è una buona idea.
Quindi se si desidera verificare il successo della chiusura di un file, farlo manualmente (ma solo successivamente).
fonte
2011-01-26 08:31:07
sì, è un duplicato. Grazie. Non l'ho trovato. –
Non è un duplicato esatto. La domanda di riferimento è specifica per ifstreams e questa è in genere relativa a fliche. –