命名空间
变体
操作

std::experimental::filesystem::directory_iterator

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

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

[编辑] 成员函数

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

[编辑] 非成员函数

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

[编辑] 另请参见

一个迭代器,用于迭代目录及其子目录的内容
(类) [编辑]
迭代目录内容的选项
(枚举) [编辑]
一个目录项
(类) [编辑]