Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Описывает входной итератор, который последовательно выполняется через имена файлов в каталоге, возможно, убывая в подкаталогы рекурсивно. Для итератора Xвыражение *X вычисляет объект класса directory_entry , который упаковывает имя файла и все, что известно о его состоянии.
Дополнительные сведения и примеры кода см. в разделе Навигация по файловой системе (C++).
Синтаксис
class recursive_directory_iterator;
Замечания
Шаблон класса хранит:
объект типа
stack<pair<directory_iterator, path>>, вызываемыйmystackздесь в целях экспозиции, который представляет собой вложенное вложение каталогов для последовательностиобъект типа
directory_entry, вызываемыйmyentryздесь, который представляет текущее имя файла в последовательности каталогов.Объект типа
bool, вызываемыйno_pushздесь, который записывает, отключен ли рекурсивный спуск в подкаталогиобъект типа
directory_options, вызываемыйmyoptionsздесь, который записывает параметры, установленные при построении
Созданный по умолчанию объект типа recursive_directory_entry имеет итератор последовательности итератор и представляет итератор mystack.top().first конца последовательности. Например, учитывая каталог abc с записями def (каталогом), def/ghiа также jklкод:
for (recursive_directory_iterator next(path("abc")), end; next != end; ++next)
visit(next->path());
вызовет визит с аргументами path("abc/def/ghi") и path("abc/jkl"). Вы можете квалифицировать последовательности в поддереве каталога двумя способами:
Ссылка на каталог будет сканирована только в том случае, если вы создаете аргумент с аргументом
recursive_directory_iteratordirectory_options, значение которого равноdirectory_options::follow_directory_symlink.При вызове
disable_recursion_pendingпоследующий каталог, возникший во время добавочного увеличения, не будет рекурсивно сканирован.
Конструкторы
| Конструктор | Description |
|---|---|
| recursive_directory_iterator | Создает документ recursive_directory_iterator. |
Функции элементов
| Функция-член | Description |
|---|---|
| depth | Возвращается mystack.size() - 1, поэтому pval глубина равна нулю. |
| disable_recursion_pending | Магазины true в no_push. |
| increment | Переходит к следующему имени файла в последовательности. |
| options | Возвращает myoptions. |
| pop | Возвращает следующий объект. |
| recursion_pending | Возвращает !no_push. |
Операторы
| Operator | Description |
|---|---|
| оператор!= | Возвращает !(*this == right). |
| operator= | Операторы-члены присваивания по умолчанию работают корректно. |
| operator== | Возвращается true только в том случае, если *this оба и правые являются итераторами последовательности или оба не являются итераторами конца последовательности. |
| operator* | Возвращает myentry. |
| operator-> | Возвращает &**this. |
| оператор++ | Увеличивает значение recursive_directory_iterator. |
Требования
Заголовок:<файловая система>
Пространство имен: std::tr2::sys
recursive_directory_iterator::depth
Возвращается mystack.size() - 1, поэтому pval глубина равна нулю.
int depth() const;
recursive_directory_iterator::disable_recursion_pending
Магазины true в no_push.
void disable_recursion_pending();
recursive_directory_iterator::increment
Переходит к следующему имени файла в последовательности.
recursive_directory_iterator& increment(error_code& ec) noexcept;
Параметры
Европейское сообщество
Указанный код ошибки.
Замечания
Функция пытается перейти к имени следующего файла во вложенной последовательности. В случае успешного выполнения он сохраняет это имя файла; в myentryпротивном случае он создает итератор конца последовательности.
recursive_directory_iterator::operator!=
Возвращает !(*this == right).
bool operator!=(const recursive_directory_iterator& right) const;
Параметры
right
Recursive_directory_iterator для сравнения.
recursive_directory_iterator::operator=
Операторы-члены присваивания по умолчанию работают корректно.
recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default;
recursive_directory_iterator& operator=(recursive_directory_iterator&&) noexcept = default;
Параметры
recursive_directory_iterator
Recursive_directory_iterator копируется в recursive_directory_iterator.
recursive_directory_iterator::operator==
Возвращается true только в том случае, если *this оба и правые являются итераторами последовательности или оба не являются итераторами конца последовательности.
bool operator==(const recursive_directory_iterator& right) const;
Параметры
right
Recursive_directory_iterator для сравнения.
recursive_directory_iterator::operator*
Возвращает myentry.
const directory_entry& operator*() const;
recursive_directory_iterator::operator>
Возвращает &**this.
const directory_entry * operator->() const;
recursive_directory_iterator::operator++
Увеличивает значение recursive_directory_iterator.
recursive_directory_iterator& operator++();
recursive_directory_iterator& operator++(int);
Параметры
int
Указанный добавочный элемент.
Замечания
Сначала вызывается increment()функция-член, а затем возвращается *this. Вторая функция-член делает копию объекта, вызывает increment(), затем возвращает копию.
recursive_directory_iterator::options
Возвращает myoptions.
directory_options options() const;
recursive_directory_iterator::pop
Возвращает следующий объект.
void pop();
Замечания
Если depth() == 0 объект становится итератором конца последовательности. В противном случае функция-член завершает проверку текущего (самого глубокого) каталога и возобновляет ее на следующем нижнем уровне глубины.
recursive_directory_iterator::recursion_pending
Возвращает !no_push.
bool recursion_pending() const;
recursive_directory_iterator::recursive_directory_iterator
Создает документ recursive_directory_iterator.
recursive_directory_iterator() noexcept;
explicit recursive_directory_iterator(const path& pval);
recursive_directory_iterator(const path& pval,
error_code& ec) noexcept;
recursive_directory_iterator(const path& pval,
directory_options opts);
recursive_directory_iterator(const path& pval,
directory_options opts,
error_code& ec) noexcept;
recursive_directory_iterator(const recursive_directory_iterator&) = default;
recursive_directory_iterator(recursive_directory_iterator&&) noexcept = default;
Параметры
pval
Заданный путь.
error_code
Указанный код ошибки.
Выбирает
Указанные параметры каталога.
recursive_directory_iterator
recursive_directory_iterator, копией которого будет создаваемый recursive_directory_iterator.
Замечания
Первый конструктор создает итератор конца последовательности. Второй и третий конструкторы хранятся false в directory_options::none no_push и вmyoptions, а затем пытаются открыть и прочитать pval в качестве каталога. В случае успешного выполнения они инициализируют mystack и myentry назначают первое имя файла, отличного от каталога, в вложенной последовательности; в противном случае они создают итератор конца последовательности.
Четвертый и пятый конструкторы ведут себя так же, как второй и третий, за исключением того, что они первый магазин выбирает в myoptions. Конструктор по умолчанию ведет себя должным образом.
См. также
Справочник по файлам заголовков
<filesystem>
Навигация по файловой системе (C++)