¿Debo llamar manualmente al close()
cuando uso un std::ifstream
?¿Debo cerrar manualmente un ifstream?
Por ejemplo, en el código:
std::string readContentsOfFile(std::string fileName) {
std::ifstream file(fileName.c_str());
if (file.good()) {
std::stringstream buffer;
buffer << file.rdbuf();
file.close();
return buffer.str();
}
throw std::runtime_exception("file not found");
}
¿Es necesario llamar file.close()
manualmente? ¿No debería ifstream
hacer uso de RAII para cerrar archivos?
+1 - Al menos uno que sabe lo que significa RAII :-) – Milan
+1 No sabía que RAII maneja eso ... Supongo que aprenderá algo nuevo todos los días – TStamper
Usar un alcance anidado solo para cerrar el archivo es completamente artificial: si quieres cerrarlo, llama a close() en él. –