在线文档教程
C++
文件系统 | Filesystem

std::filesystem::recursive_directory_iterator

STD::文件系统::递归[医]目录[医]迭代器

Defined in header
class recursive_directory_iterator;(since C++17)

recursive_directory_iteratorInputIterator,则遍历directory_entry目录的元素,并且递归地遍历所有子目录的条目。迭代顺序未指定,只是每个目录条目只访问一次。

默认情况下,符号链接不遵循,但可以通过指定目录选项来启用此链接。follow_directory_symlink建筑时间。

跳过特殊路径名点和点点.

如果recursive_directory_iterator在顶层目录的最后一个目录项之后,它就等于默认构造的迭代器(也称为结束迭代器)。两个结束迭代器总是相等的,取消引用或递增结束迭代器是未定义的行为。

如果在创建递归目录迭代器之后删除或添加了文件或目录树,则未指定是否通过迭代器观察更改。

如果目录结构包含周期,则可能无法访问结束迭代器。

成员类型

Member typeDefinition
value_typestd::filesystem::directory_entry
difference_typestd::ptrdiff_t
pointerconst std::filesystem::directory_entry*
referenceconst std::filesystem::directory_entry&
iterator_categorystd::input_iterator_tag

成员函数

(constructor)constructs a recursive directory iterator (public member function)
(destructor)default destructor (public member function)

观察员

操作者%2A操作符->访问指向入口%28的公共成员函数%29。

选项返回影响迭代%28公共成员函数%29的当前活动选项。

深度返回当前递归深度%28公共成员函数%29

递归[医]挂起检查当前目录%28公共成员函数%29是否禁用递归

修饰符

运算符=分配内容%28公共成员函数%29

增量运算符++前进到下一个条目%28公共成员函数%29

POP将迭代器在目录层次结构%28公共成员函数%29中向上移动一级。

禁用[医]递归[医]挂起将禁用递归,直到下一次增量%28公共成员函数%29

非会员职能

begin(std::filesystem::recursive_directory_iterator)end(std::filesystem::recursive_directory_iterator)range-based for loop support (function)

此外,operator==operator!=提供,或作为成员或非会员,按InputIterator...

注记

recursive_directory_iterator通常保存引用计数。指针%28以满足InputIterator%29指向一个实现对象,该对象包含:

  • 容器%28,如std::vector%29directory_iterator斯,它构成递归堆栈。

  • 递归深度计数器%28可访问depth()%29

  • 构造%28时使用的目录选项options()%29

  • 挂起的递归标志%28可使用recursion_pending(),可以与目录选项组合,以节省空间%29。

二次

#include <fstream> #include <iostream> #include <filesystem> namespace fs = std::filesystem; int main() { fs::create_directories("sandbox/a/b" std::ofstream("sandbox/file1.txt" fs::create_symlink("a", "sandbox/syma" for(auto& p: fs::recursive_directory_iterator("sandbox")) std::cout << p << '\n'; fs::remove_all("sandbox" }

二次

可能的产出:

二次

"sandbox/a" "sandbox/a/b" "sandbox/file1.txt" "sandbox/syma"

二次

另见

directory_iterator (C++17)an iterator to the contents of the directory (class)
directory_entry (C++17)a directory entry (class)
directory_options (C++17)options for iterating directory contents (enum)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/filesystem/递归[医]目录[医]迭代器