Avatar ·

Comment vérifier rapidement l'existence d'un fichier en C++ (C++11/14/17) ?

Bonjour à tous ! J'écris en C++ depuis environ un an, mais je n'arrive toujours pas à trouver la meilleure façon de vérifier si un fichier existe sur le disque. Le problème est que je dois le faire très souvent — je traite des centaines de fichiers en boucle, et chaque milliseconde compte. Actuellement, j'utilise ce code :

#include <fstream>
bool fileExists(const std::string& filename) {
    std::ifstream f(filename.c_str());
    return f.good();
}
Cela fonctionne, mais je soupçonne que ce n'est pas la version la plus rapide, car elle ouvre le fichier entièrement. J'ai aussi essayé d'utiliser `stat()` :

#include <sys/stat.h>
bool fileExists(const std::string& name) {
    struct stat buffer;
    return (stat(name.c_str(), &buffer) == 0);
}
Mais c'est du code dépendant de la plateforme (Windows ne supporte pas `stat` sans macros supplémentaires). J'ai entendu dire que `std::filesystem` est apparu en C++17, mais je ne suis pas sûr de sa rapidité. Question : quelle est la méthode la plus rapide et la plus