std::filesystem::recursive_directory_iterator
| Defined in header <filesystem> |  |  | 
|---|---|---|
| class recursive_directory_iterator; |  | (since C++17) | 
recursive_directory_iterator是InputIterator,则遍历directory_entry目录的元素,并且递归地遍历所有子目录的条目。迭代顺序未指定,只是每个目录条目只访问一次。
默认情况下,符号链接不遵循,但可以通过指定目录选项来启用此链接。follow_directory_symlink建筑时间。
跳过特殊路径名点和点点.
如果recursive_directory_iterator在顶层目录的最后一个目录项之后,它就等于默认构造的迭代器(也称为结束迭代器)。两个结束迭代器总是相等的,取消引用或递增结束迭代器是未定义的行为。
如果在创建递归目录迭代器之后删除或添加了文件或目录树,则未指定是否通过迭代器观察更改。
如果目录结构包含周期,则可能无法访问结束迭代器。
成员类型
| Member type | Definition | 
|---|---|
| value_type | std::filesystem::directory_entry | 
| difference_type | std::ptrdiff_t | 
| pointer | const std::filesystem::directory_entry* | 
| reference | const std::filesystem::directory_entry& | 
| iterator_category | std::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。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

