Creo que las respuestas anteriores son engañosas.
fstream
es un objeto RAII adecuada, hace se cierran automáticamente al final del alcance, y no hay absolutamente ninguna necesidad llamar close
manualmente cuando se cierra al final del alcance es suficiente.
En particular, no es una "mejor práctica" y no es necesario enjuagar la salida.
Y si bien Drakosha tiene razón al llamar al close
le da la posibilidad de verificar el bit de falla de la transmisión, nadie lo hace, de todos modos.
En un mundo ideal, uno simplemente llamaría stream.exception(ios::failbit)
de antemano y manejaría la excepción que se arroja en un destructor fstream
. Pero desafortunadamente las excepciones en destructores son un concepto roto en C++, por lo que no es una buena idea.
Así que si desea comprobar el éxito del cierre de un archivo, hágalo manualmente (pero solo entonces).
sí, es un duplicado. Gracias. No lo encontré. –
No es un duplicado exacto. La pregunta a la que se hace referencia es específica de ifstreams, y esta generalmente trata sobre fstreams. –