std::experimental::filesystem:: directory_iterator
|
定义于头文件
<experimental/filesystem>
|
||
|
class
directory_iterator
;
|
(文件系统 TS) | |
directory_iterator
是一种
LegacyInputIterator
,用于遍历目录中的
directory_entry
元素(但不会访问子目录)。迭代顺序未作规定,但确保每个目录条目仅被访问一次。特殊路径名
dot
和
dot-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
|
成员函数
|
构造目录迭代器
(公开成员函数) |
|
|
(destructor)
|
默认析构函数
(公开成员函数) |
|
赋值内容
(公开成员函数) |
|
|
访问指向的条目
(公开成员函数) |
|
|
前进到下一个条目
(公开成员函数) |
非成员函数
|
基于范围的 for 循环支持
(函数) |
此外,根据 LegacyInputIterator 的要求,提供了 operator == 和 operator ! = 运算符,这些运算符可根据需要实现为成员函数或非成员函数。
示例
#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"
参见
|
遍历目录及其子目录内容的迭代器
(类) |
|
|
目录遍历选项
(枚举) |
|
|
目录项
(类) |