directory_iterator

描述通过目录中的文件名排序的输入迭代器。 对于迭代器 X,表达式 *X 的计算结果为一个 directory_entry 类的对象,它包装了文件名及与其状态有关的任何信息。

该类存储 path 类型的对象(此处出于阐述的目的称为 mydir,它表示要对其进行排序的目录的名称)和 directory_entry 类型的对象(此处称为 myentry,它表示目录序列中的当前文件名)。 directory_entry 类型的默认构造对象具有一个空的 mydir 路径名称并表示序列末迭代器。

例如,假定目录 abc 包含条目 defghi,代码:

for (directory_iterator next(path("abc")), end; next != end; ++next) visit(next->path());

使用自变量 path("abc/def")path("abc/ghi") 调用 visit

有关详细信息和代码示例,请参阅文件系统导航 (C++)

语法

class directory_iterator;

构造函数

构造函数 说明
directory_iterator 构造通过目录中的文件名排序的输入迭代器。

成员函数

成员函数 说明
increment 尝试转到目录中的下一个文件名。

运算符

运算符 说明
operator!= 返回 !(*this == right)
operator= 默认成员赋值运算符的行为符合预期。
operator== 仅当 *thisright 都是序列末迭代器,或者两者都不是序列末迭代器时,才返回 true
operator* 返回 myentry
operator-> 返回 &**this
operator++ 调用 increment(),然后返回 *this,或创建对象的副本,调用 increment(),然后返回副本。

要求

标头<filesystem>

命名空间std::filesystem

directory_iterator::directory_iterator

第一个构造函数将生成序列末迭代器。 第二个和第三个构造函数将 pval 存储在 mydir 中,然后尝试将 mydir 作为目录打开和读取。 如果成功,它们会将目录中的第一个文件名存储在 myentry 中;否则它们将生成序列末迭代器。

默认构造函数的行为与预期相同。

directory_iterator() noexcept;
explicit directory_iterator(const path& pval);

directory_iterator(const path& pval, error_code& ec) noexcept;
directory_iterator(const directory_iterator&) = default;
directory_iterator(directory_iterator&&) noexcept = default;

参数

pval
存储的文件名路径。

ec
状态错误代码。

directory_iterator
存储的对象。

directory_iterator::increment

该函数尝试转到目录中的下一个文件名。 如果成功,它会将该文件名存储在 myentry 中;否则它会生成一个序列末迭代器。

directory_iterator& increment(error_code& ec) noexcept;

directory_iterator::operator!=

该成员运算符将返回 !(*this == right)

bool operator!=(const directory_iterator& right) const;

参数

right
directory_iterator 进行比较的 directory_iterator

directory_iterator::operator=

默认成员赋值运算符的行为符合预期。

directory_iterator& operator=(const directory_iterator&) = default;
directory_iterator& operator=(directory_iterator&&) noexcept = default;

参数

right
要复制到 directory_iterator 中的 directory_iterator

directory_iterator::operator==

仅当 *thisright 均为序列末迭代器或均不为序列末迭代器时,该成员运算符才返回 true

bool operator==(const directory_iterator& right) const;

参数

right
正在与 directory_iterator 比较的 directory_iterator

directory_iterator::operator*

该成员运算符将返回 myentry

const directory_entry& operator*() const;

directory_iterator::operator->

成员函数返回 &**this

const directory_entry * operator->() const;

directory_iterator::operator++

第一个成员函数调用 increment(),然后返回 *this。 第二个成员函数复制该对象,并调用 increment(),然后返回副本。

directory_iterator& operator++();
directory_iterator& operator++(int);

参数

int
增量的数量。

另请参阅

<filesystem>
头文件引用
文件系统导航 (C++)