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