std::experimental::filesystem::directory_iterator
来自 cppreference.cn
< cpp | experimental | fs
定义于头文件 <experimental/filesystem> |
||
class directory_iterator; |
(filesystem 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
|
[编辑] 成员函数
构造一个目录迭代器 (公共成员函数) | |
(析构函数) |
默认析构函数 (公共成员函数) |
赋值内容 (公共成员函数) | |
访问指向的条目 (公共成员函数) | |
前进到下一个条目 (公共成员函数) |
[编辑] 非成员函数
基于范围的 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"
[编辑] 参见
目录及其子目录内容的迭代器 (类) | |
用于迭代目录内容的选项 (枚举) | |
一个目录条目 (类) |