fstream son geniales pero profundizaré un poco más y les contaré acerca de RAII.
El problema con un ejemplo clásico es que se ve obligado a cerrar el archivo usted mismo, lo que significa que tendrá que doblar su arquitectura a esta necesidad. RAII hace uso de la llamada de destructor automático en C++ para cerrar el archivo por usted.
Actualización: parece que std :: fstream ya implementa RAII por lo que el siguiente código es inútil. Lo mantendré aquí para la posteridad y como un ejemplo de RAII.
class FileOpener
{
public:
FileOpener(std::fstream& file, const char* fileName): m_file(file)
{
m_file.open(fileName);
}
~FileOpeneer()
{
file.close();
}
private:
std::fstream& m_file;
};
Ahora puede utilizar esta clase en su código como este:
int nsize = 10;
char *somedata;
ifstream myfile;
FileOpener opener(myfile, "<path to file>");
myfile.read(somedata,nsize);
// myfile is closed automatically when opener destructor is called
aprender cómo funciona RAII le puede ahorrar algunos dolores de cabeza y algunos de los principales errores de gestión de memoria.
[C++: Entrada/Salida con archivos] (http://www.cplusplus.com/doc/tutorial/files.html) – mreggen
Cualquier persona interesada en RAII, debe verificar [The Official Resource Management Página] (http://www.relisoft.com/resource/resmain.html) por Bartosz Milewski. – titanae