Avatar ·

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