std::filesystem::directory_iterator::directory_iterator

来自cppreference.com
 
 
 
 
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,

                    std::error_code& ec );
(5) (C++17 起)
directory_iterator( const directory_iterator& other ) = default;
(6) (C++17 起)
directory_iterator( directory_iterator&& other ) = default;
(7) (C++17 起)

构造新的目录迭代器。

1) 构造尾迭代器。
2) 构造指代 p 所标识的目录的首个目录条目的目录迭代器。若 p 指代不存在的文件或不指代目录,则抛出 std::filesystem::filesystem_error
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