名前空間
変種
操作

std::filesystem::directory_iterator::directory_iterator

From 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) と同じですが、optionsstd::filesystem::directory_options::skip_permission_deniedが設定されており、構築中にアクセス権拒否エラーが発生した場合、末尾イテレータを構築し、エラーを報告しません。
4) pで識別されるディレクトリの最初のディレクトリエントリを参照するディレクトリイテレータを構築します。pが存在しないファイルまたはディレクトリではないものを参照する場合、末尾イテレータを返し、ecを設定します。
5) (4) と同じですが、optionsstd::filesystem::directory_options::skip_permission_deniedが設定されており、構築中にアクセス権拒否エラーが発生した場合、末尾イテレータを構築し、エラーを報告しません。
6) コピーコンストラクタ。
7) ムーブコンストラクタ。

目次

[編集] パラメータ

p - ディレクトリイテレータが参照するファイルシステムオブジェクトへのパス
エラーコード - 例外を投げないオーバーロードでのエラー報告用アウトパラメータ
options - ディレクトリイテレータの動作を制御するBitmaskTypeオプションのセット
その他 - ディレクトリイテレータを初期化するために使用する別のディレクトリイテレータ

[編集] 例外

noexcept とマークされていないオーバーロードは、メモリ割り当てが失敗した場合に std::bad_alloc をスローする可能性があります。

2,3) 下位OS APIエラーが発生した場合、std::filesystem::filesystem_errorをスローします。これは、最初のパス引数としてp、エラーコード引数としてOSエラーコードで構築されます。
4,5) OS API呼び出しが失敗した場合、OS APIエラーコードをstd::error_code&パラメータに設定します。エラーが発生しなかった場合はec.clear()を実行します。

[編集] 注記

現在のディレクトリを反復処理するには、directory_iterator("") の代わりに directory_iterator(".") としてイテレータを構築してください。

[編集]

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 3013 C++17 error_code オーバーロードは noexcept とマークされていますが、メモリを割り当てる可能性があります。 noexcept 削除
English 日本語 中文(简体) 中文(繁體)