Como verificar rapidamente a existência de um arquivo em C++ (C++11/14/17)?
Olá a todos! Escrevo em C++ há cerca de um ano, mas ainda não encontrei a melhor maneira definitiva de verificar se um arquivo existe no disco. O problema é que preciso fazer isso com muita frequência — em um loop, processo centenas de arquivos, e cada milissegundo conta.
Atualmente, uso este código:
#include <fstream>
bool fileExists(const std::string& filename) {
std::ifstream f(filename.c_str());
return f.good();
}
Ele funciona, mas suspeito que não seja a opção mais rápida, porque abre o arquivo inteiro. Também tentei usar `stat()`:
#include <sys/stat.h>
bool fileExists(const std::string& name) {
struct stat buffer;
return (stat(name.c_str(), &buffer) == 0);
}
Mas isso é código dependente de plataforma (Windows não suporta `stat` sem macros adicionais). Ouvi dizer que em C++17 surgiu `std::filesystem`, mas não tenho certeza de quão rápido ele é.
Pergunta: qual método é o mais rápido e