描述通过目录中的文件名排序的输入迭代器。 对于迭代器 X
,表达式 *X
的计算结果为一个 directory_entry
类的对象,它包装了文件名及与其状态有关的任何信息。
该类存储 path
类型的对象(此处出于阐述的目的称为 mydir
,它表示要对其进行排序的目录的名称)和 directory_entry
类型的对象(此处称为 myentry
,它表示目录序列中的当前文件名)。 directory_entry
类型的默认构造对象具有一个空的 mydir
路径名称并表示序列末迭代器。
例如,假定目录 abc
包含条目 def
和 ghi
,代码:
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== |
仅当 *this 和 right 都是序列末迭代器,或者两者都不是序列末迭代器时,才返回 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==
仅当 *this
和 right
均为序列末迭代器或均不为序列末迭代器时,该成员运算符才返回 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
增量的数量。