std::experimental::filesystem::directory_iterator

来自cppreference.com
< cpp‎ | experimental‎ | fs
 
 
 
 
在标头 <experimental/filesystem> 定义
class directory_iterator;
(文件系统 TS)

directory_iterator 是一种老式输入迭代器 (LegacyInputIterator) ,在目录的 directory_entry 元素上迭代(但不访问子目录)。未指明迭代顺序,但每个目录项均被访问一次。跳过特殊路径名 点点

如果 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

成员函数

构造目录迭代器
(公开成员函数)
(析构函数)
预置的析构函数
(公开成员函数)
赋值内容
(公开成员函数)
访问所指向的目录项
(公开成员函数)
推进到下一个目录项
(公开成员函数)

非成员函数

支持基于范围的 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"

参阅

指向目录及其子目录的内容的迭代器
(类)
用于迭代目录内容的选项
(枚举)
目录条目
(类)