Namespaces
Variants

std::experimental::filesystem:: directory_iterator

From cppreference.net
定义于头文件 <experimental/filesystem>
class directory_iterator ;
(文件系统 TS)

directory_iterator 是一种 LegacyInputIterator ,用于遍历目录中的 directory_entry 元素(但不会访问子目录)。迭代顺序未作规定,但确保每个目录条目仅被访问一次。特殊路径名 dot dot-dot 会被跳过。

如果 directory_iterator 前进超过最后一个目录条目,它将变为与默认构造的迭代器相等,该迭代器也被称为结束迭代器。两个结束迭代器始终相等,解引用或递增结束迭代器是未定义行为。

如果在创建目录迭代器后从目录树中删除或添加了文件或目录,是否通过迭代器观察到该更改是未指定的。

目录

成员类型

成员类型 定义
value_type filesystem::directory_entry
difference_type std::ptrdiff_t
pointer const filesystem::directory_entry*
reference const filesystem::directory_entry&
iterator_category std::input_iterator_tag

成员函数

构造目录迭代器
(公开成员函数)
(destructor)
默认析构函数
(公开成员函数)
赋值内容
(公开成员函数)
访问指向的条目
(公开成员函数)
前进到下一个条目
(公开成员函数)

非成员函数

基于范围的 for 循环支持
(函数)

此外,根据 LegacyInputIterator 的要求,提供了 operator == operator ! = 运算符,这些运算符可根据需要实现为成员函数或非成员函数。

示例

#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    fs::create_directories("sandbox/a/b");
    std::ofstream{"sandbox/file1.txt"};
    std::ofstream{"sandbox/file2.txt"};
    for (const fs::directory_entry& entry : fs::directory_iterator{"sandbox"})
        std::cout << entry << '\n';
    fs::remove_all("sandbox");
}

可能的输出:

"sandbox/a"
"sandbox/file1.txt"
"sandbox/file2.txt"

参见

遍历目录及其子目录内容的迭代器
(类)
目录遍历选项
(枚举)
目录项
(类)