命名空间
变体
操作

std::experimental::filesystem::directory_iterator

来自 cppreference.cn
< cpp‎ | experimental‎ | fs
 
 
 
 
定义于头文件 <experimental/filesystem>
class directory_iterator;
(文件系统技术规范)

directory_iterator 是一个 LegacyInputIterator,它迭代目录的 directory_entry 元素(但不访问子目录)。迭代顺序未指定,除了每个目录条目只访问一次。特殊路径名 dotdot-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

[编辑] 成员函数

构造目录迭代器
(public member function) [编辑]
(析构函数)
默认析构函数
(public member function) [编辑]
赋值内容
(public member function) [编辑]
访问指向的条目
(public member function) [编辑]
前进到下一个条目
(public member function) [编辑]

[编辑] 非成员函数

支持基于范围的 for 循环
(函数) [编辑]

此外,还提供了 operator==operator!=,作为成员或非成员,由 LegacyInputIterator 要求。

[编辑] 示例

#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"

[编辑] 另请参阅

指向目录及其子目录内容的迭代器
(类) [编辑]
迭代目录内容的选项
(枚举) [编辑]
目录项
(类) [编辑]