std::experimental::filesystem::directory_iterator
来自cppreference.com
< cpp | experimental | fs
在标头 <experimental/filesystem> 定义
|
||
class directory_iterator; |
(文件系统 TS) | |
directory_iterator
是一种老式输入迭代器 (LegacyInputIterator) ,在目录的 directory_entry 元素上迭代(但不访问子目录)。未指明迭代顺序,但每个目录项均被访问一次。跳过特殊路径名 点 和 点点。
如果 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"
参阅
指向目录及其子目录的内容的迭代器 (类) | |
用于迭代目录内容的选项 (枚举) | |
目录条目 (类) |