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