名稱空間
變體
操作

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 - 控制目錄迭代器行為的 位掩碼型別 選項集
其他 - 另一個目錄迭代器,用作初始化目錄迭代器的源

[編輯] 異常

任何未標記為 noexcept 的過載都可能在記憶體分配失敗時丟擲 std::bad_alloc

2,3) 在底層作業系統 API 錯誤時丟擲 std::filesystem::filesystem_error,構造時以 p 作為第一個路徑引數,作業系統錯誤碼作為錯誤碼引數。
4,5) 如果作業系統 API 呼叫失敗,則將 std::error_code& 引數設定為作業系統 API 錯誤碼,如果沒有發生錯誤,則執行 ec.clear()

[編輯] 注意

要遍歷當前目錄,請將迭代器構造為 directory_iterator(".") 而不是 directory_iterator("")

[編輯] 示例

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 3013 C++17 error_code 過載被標記為 noexcept 但可以分配記憶體 noexcept 已移除