Namespaces
Variants

std::experimental::filesystem::recursive_directory_iterator:: disable_recursion_pending

From cppreference.net
void disable_recursion_pending ( ) ;
(filesystem TS)

Отключает рекурсию для текущего указанного подкаталога, если таковой имеется.

Вызов изменяет флаг отложенной рекурсии итератора таким образом, что при следующем вызове increment итератор перейдёт внутри текущего каталога, даже если в данный момент он ссылается на непосещённую поддиректорию.

Статус флага ожидающей рекурсии можно проверить с помощью recursion_pending() , который становится false после этого вызова. Он сбрасывается обратно в true после increment , и его начальное значение также true .

Поведение не определено, если * this является конечным итератором.

Содержание

Параметры

(нет)

Возвращаемое значение

(нет)

Исключения

Может генерировать исключения, определяемые реализацией.

Пример

#include <experimental/filesystem>
#include <fstream>
#include <iostream>
#include <string>
namespace fs = std::experimental::filesystem;
int main()
{
    fs::create_directories("sandbox/a/b/c");
    fs::create_directories("sandbox/a/b/d/e");
    std::ofstream("sandbox/a/b/file1.txt");
    fs::create_symlink("a", "sandbox/syma");
    for (auto i = fs::recursive_directory_iterator("sandbox");
             i != fs::recursive_directory_iterator(); ++i)
    {
        std::cout << std::string(i.depth(), ' ') << *i;
        if (fs::is_symlink(i->symlink_status()))
            std::cout << " -> " << fs::read_symlink(*i);
        std::cout << '\n';
        // не спускаться в "b"
        if (i->path().filename() == "b")
            i.disable_recursion_pending();
    }
    fs::remove_all("sandbox");
}

Вывод:

"sandbox/a"
 "sandbox/a/b"
"sandbox/syma" -> "a"

Смотрите также

проверяет, отключена ли рекурсия для текущей директории
(public member function)
переходит к следующей записи
(public member function)