Я пытаюсь получить все файлы в каталоге через c ++ 17 на моей Visual Studio 2017, но я только что столкнулся с действительно странной проблемой.Если я укажу каталог таким образом, я смогу без проблем получить все файлы:
for (auto& p : std::filesystem::recursive_directory_iterator("C:\\Users\\r00t\\AppData\\Roaming\\Mozilla")) {
if (std::filesystem::is_regular_file(p.path())) {
std::cout << p.path() << std::endl;
}
}
Но мне нужен весь список файлов в APPDATA, и я пытаюсь получить путь с помощью функции getenv () и при ее использованииФункция "recursive_directory_iterator" пропускает файлы:
for (auto& p : std::filesystem::recursive_directory_iterator(getenv("APPDATA"))) {
if (std::filesystem::is_regular_file(p.path())) {
std::cout << p.path() << std::endl;
}
}
Это из-за использования функции getenv ()?Некоторые папки, которые пропускаются при использовании getenv;
Mozilla
TeamWiever
NVIDIA
и т. Д. *
Кстати, я использую C ++ последние 5 дней и определенно не знаю, что является причиной этогоповедение.Пожалуйста, помогите мне, сейчас я застрял.
РЕДАКТИРОВАТЬ:
for (auto& p : std::filesystem::directory_iterator(getenv("APPDATA"))) {
std::string targetFolder = p.path().string();
for (auto& targetFolderFiles : std::filesystem::recursive_directory_iterator(targetFolder)) {
if (std::filesystem::is_regular_file(targetFolderFiles.path())) {
std::cout << targetFolderFiles.path() << std::endl;
}
}
}
Это также не работает, похоже, я должен поместить строку в функцию, как это:
recursive_directory_iterator("C:\\Users\\r00t\\AppData\\Roaming\\Mozilla")
иначе определенно не работает, LOL ??
РЕДАКТИРОВАТЬ - ИСПРАВЛЕНО ПРОБЛЕМА
Использование экспериментальной библиотеки работает с компилятором C ++ 14, как и ожидалось.
#include <experimental/filesystem>
Теперь я могу получить всефайлы без проблем. Похоже, что это проблема C ++ 17 и библиотеки файловой системы. Спасибо за поддержку, ребята.