На данный вопрос уже ответили:
Как сделать поиск файлов в деректории с определенным раcширением?
#include <iostream>
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
int main() {
const auto req_ext = ".a";
for (const auto& filename : fs::directory_iterator("/usr/lib")) {
if (!fs::path(filename).extension().compare(req_ext))
std::cout << "file: " << filename << "\n";
}
return 0;
}
Не забудьте указать stdc++fs
в списке библиотек для линковки.
Вариант для CMake:
target_link_libraries(${PROJECT_NAME} PRIVATE
stdc++fs)
UPD.: если Вам по какой-то причине нужны регулярные выражения, то см. код ниже (вариант для linux-based ОС).
#include <iostream>
#include <dirent.h>
#include <regex>
int main() {
dirent* dirp;
std::regex ext_regex("[a-z]+\\.a");
if (DIR *dp = opendir("/usr/lib")) {
while ((dirp = readdir(dp))) {
if (std::regex_match(dirp->d_name, ext_regex)) {
std::cout << dirp->d_name << "\n";
}
}
closedir(dp);
}
return 0;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Гуглиться за 1 минутуВ интеррнете куча информации на этот счет
Подскажите, как более правильнее и элегантнее решить следующую задачу: