Cómo verificar rápidamente la existencia de un archivo en C++ (C++11/14/17)?
¡Hola a todos! Llevo escribiendo en C++ aproximadamente un año, pero aún no encuentro la mejor manera definitiva de verificar si un archivo existe en el disco. El problema es que necesito hacerlo muy a menudo — proceso cientos de archivos en un bucle, y cada milisegundo cuenta.
Actualmente uso este código:
#include
bool fileExists(const std::string& filename) {
std::ifstream f(filename.c_str());
return f.good();
}
Funciona, pero sospecho que no es la opción más rápida porque abre el archivo por completo. También probé usar `stat()`:
#include
bool fileExists(const std::string& name) {
struct stat buffer;
return (stat(name.c_str(), &buffer) == 0);
}
Pero es código dependiente de la plataforma (Windows no soporta `stat` sin macros adicionales). He oído que en C++17 apareció `std::filesystem`, pero no estoy seguro de qué tan rápido es.
Pregunta: ¿cuál es la forma más rápida y