std::filesystem::directory_iterator::directory_iterator
来自cppreference.com
< cpp | filesystem | directory iterator
directory_iterator() noexcept; |
(1) | (C++17 起) |
explicit directory_iterator( const std::filesystem::path& p ); |
(2) | (C++17 起) |
directory_iterator( const std::filesystem::path& p, std::filesystem::directory_options options ); |
(3) | (C++17 起) |
directory_iterator( const std::filesystem::path& p, std::error_code& ec ); |
(4) | (C++17 起) |
directory_iterator( const std::filesystem::path& p, std::filesystem::directory_options options, |
(5) | (C++17 起) |
directory_iterator( const directory_iterator& other ) = default; |
(6) | (C++17 起) |
directory_iterator( directory_iterator&& other ) = default; |
(7) | (C++17 起) |
构造新的目录迭代器。
1) 构造尾迭代器。
3) 同 (2),但若
options
中设置了 std::filesystem::directory_options::skip_permission_denied 且构造遇到权限拒绝错误,则构造尾迭代器且不报告错误。4) 构造指代
p
所标识目录的首个目录条目的目录迭代器。若 p
指代不存在的文件或不指代目录,则返回尾迭代器并设置 ec
。5) 同 (4),但若
options
中设置了 std::filesystem::directory_options::skip_permission_denied 且构造遇到权限拒绝错误,则构造尾迭代器且不报告错误。6) 复制构造函数。
7) 移动构造函数。
参数
p | - | 目录迭代器将指代的文件系统对象的路径 |
ec | - | 用于无抛出重载中报告错误的输出形参 |
options | - | 控制目录迭代器的行为的一组位掩码类型 (BitmaskType) 选项 |
other | - | 用以初始化目录迭代器的另一目录迭代器 |
异常
若内存分配失败,则任何不标记为 noexcept
的重载可能抛出 std::bad_alloc 。
2,3) 抛出 std::filesystem::filesystem_error,构造时以 p 为第一路径实参并以OS 错误码为错误码实参。
若 OS API 调用失败,则 @4,5@ 设置 std::error_code& 形参
为 OS API 错误码,而未发生错误时则执行 ec.clear()。注解
欲在当前目录迭代,则应以 directory_iterator(".") 而非 directory_iterator("") 构造迭代器。
示例
本节未完成 原因:暂无示例 |
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 3013 | C++17 | error_code 重载被标记为 noexcept 但能分配内存
|
移除 noexcept |