Avatar ·

Como obter a lista de arquivos em um diretório em C++? (multi-plataforma)

Olá a todos! Sou um desenvolvedor C++ iniciante e tive um problema. Preciso escrever uma função que obtenha a lista de todos os arquivos em um diretório especificado. Estou trabalhando no Windows, mas gostaria que o código funcionasse também no Linux (ou macOS) sem reescrever. O problema é que encontrei várias maneiras diferentes. Por exemplo, no Windows existem as funções WinAPI `FindFirstFile` / `FindNextFile`. No Linux — `opendir` / `readdir`. Mas isso é terrivelmente inconveniente: escrever `#ifdef _WIN32` e duplicar código. Ouvi dizer que no C++17 apareceu algo como `std::filesystem`. Mas não tenho certeza se isso funciona na prática. Meu compilador (MSVC 2022) parece suportar C++17, mas temo que em servidores antigos ou sistemas embarcados isso possa não compilar. Aqui está um exemplo do que estou tentando fazer (pseudocódigo): ```cpp #include #include #include // Qual função chamar? Eu quero obter vector com os nomes dos arquivos. std::vector getFilesInDirectory(const std::st