Как мне вывести список каталогов, используя аналогичную функцию, такую как opendir, но используя библиотеку файловой системы из C ++?
Функция opendir из dirent открывает каталог, но мы не можем его увидеть, что нормально.
for (const auto & entry : fs::recursive_directory_iterator(dir))
По сути, это код, который я использую для циклического перемещения по каталогам.fs - это файловая система.
Теперь opendir фактически открывает каталог без вывода сообщений.Теперь, если у него недостаточно разрешений, он не может открыть каталог и вернется, такого каталога нет.(Я сам не писал эту функцию)
void SearchFiles(std::string Directory)
{
DIR* pDir;
if((pDir = opendir(Directory.c_str())) != NULL)
{
struct dirent* pEntry;
/* print all the files and directories within directory */
while((pEntry = readdir(pDir)) != NULL)
{
if(pEntry->d_type == DT_DIR)
{
std::string Name = pEntry->d_name;
if(Name != "." && Name != "..")
SearchFiles(Directory + Name + '\\');
}
else if(pEntry->d_type == DT_REG)
{
g_vFiles.push_back(Directory + pEntry->d_name);
}
}
closedir(pDir);
}
else
{
printf("No such directory: '%s'\n", Directory.c_str());
}
}
Я не очень разбираюсь в приведенном выше коде, но да ...
НеВы уверены, насколько новой является библиотека файловой системы, но имеет ли она функцию или что-то еще, чтобы я мог сделать то, что она делает выше?
Потому что при использовании моего метода с кодом файловой системы, приведенным выше, он перечисляет все, даже те, которые яу меня нет прав доступа, я думаю.
Incase, которая не существует без использования файла dirent.h.Мне действительно нужно использовать *, чтобы сделать pDir?Разве я не могу просто написать DIR pDir, потому что указатель мне не совсем понятен.