Important
このページでは、ISO C++ ファイルシステム技術仕様 (N4100) の標準<experimental/filesystem>実装のdirectory_iterator クラスについて説明します。 この API は、<filesystem>の C++17 directory_iterator クラスと同じではありません。
directory_optionsオーバーロードのないコンストラクターのより狭いセットなど、さまざまなシグネチャを使用します。 実験用の実装は、Microsoft Visual C++ (MSVC) 14.51 ツールセットから削除されました。 新しいコードでは、代わりに C++17 directory_iterator クラスを使用する必要があります。
ディレクトリ内のファイル名を順番に並べる入力反復子について説明します。 反復子 Xの場合、式 *X は、ファイル名とその状態に関する既知の情報をラップするクラス directory_entry のオブジェクトに評価されます。
クラスは、シーケンスするディレクトリの名前を表すmydir、ここで呼び出されるpath型のオブジェクトと、ディレクトリ シーケンス内の現在のファイル名を表す、ここでmyentry呼び出directory_entry型のオブジェクトを格納します。
directory_entry型の既定の構築済みオブジェクトは、空のmydirパス名を持ち、シーケンスの終了反復子を表します。
たとえば、エントリがdefおよびghiディレクトリabc場合、コードは次のようになります。
for (directory_iterator next(path("abc")), end; next != end; ++next) visit(next->path());
は、引数path("abc/def")とpath("abc/ghi")を使用してvisitを呼び出します。
構文
class directory_iterator;
Constructors
| コンストラクター | Description |
|---|---|
directory_iterator |
ディレクトリ内のファイル名をシーケンス処理する入力反復子を構築します。 |
メンバー関数
| メンバー関数 | Description |
|---|---|
increment |
ディレクトリ内の次のファイル名に進もうとします。 |
Operators
| Operator | Description |
|---|---|
operator!= |
!(*this == right) を返します。 |
operator= |
既定のメンバー割り当て演算子は、想定どおりに動作します。 |
operator== |
*thisとrightの両方がシーケンス末尾反復子であるか、両方がシーケンス末尾反復子でない場合にのみ、trueを返します。 |
operator* |
myentry を返します。 |
operator-> |
&**this を返します。 |
operator++ |
increment()を呼び出し、*thisを返すか、オブジェクトのコピーを作成し、increment()を呼び出してから、コピーを返します。 |
Requirements
ヘッダー: <experimental/filesystem>
名前 空間:std::experimental::filesystem
directory_iterator::directory_iterator
最初のコンストラクターは、シーケンス末尾反復子を生成します。
pval引数を受け取るコンストラクターは、mydirに格納し、mydirを開いてディレクトリとして読み取ろうとします。 成功した場合は、最初のファイル名を myentryのディレクトリに格納します。それ以外の場合は、シーケンス末尾反復子が生成されます。
ec引数を受け取るオーバーロードは、例外をスローするのではなく、ecでエラーを報告します。 コピーコンストラクターと移動コンストラクターは期待どおりに動作します。
directory_iterator() noexcept;
explicit directory_iterator(const path& pval);
directory_iterator(const path& pval, error_code& ec) noexcept;
directory_iterator(const directory_iterator&) = default;
directory_iterator(directory_iterator&&) = default;
パラメーター
pval
保存されているファイル名のパス。
ec
状態エラー コード。
directory_iterator
格納されているオブジェクト。
directory_iterator::increment
この関数は、ディレクトリ内の次のファイル名に進もうとします。 成功した場合は、そのファイル名が myentryに格納されます。それ以外の場合は、シーケンスの末尾反復子が生成されます。
directory_iterator& increment(error_code& ec) noexcept;
パラメーター
ec
状態エラー コード。
directory_iterator::operator!=
演算子は !(*this == right)を返します。
bool operator!=(const directory_iterator& right) const;
パラメーター
right
directory_iteratorと比較されるdirectory_iterator。
directory_iterator::operator=
既定のメンバー割り当て演算子は、想定どおりに動作します。
directory_iterator& operator=(const directory_iterator&) = default;
directory_iterator& operator=(directory_iterator&&) = default;
パラメーター
right
directory_iteratorにコピーされるdirectory_iterator。
directory_iterator::operator==
この演算子は、*thisとrightの両方がシーケンスの末尾反復子であるか、両方がシーケンス末尾反復子でない場合にのみ、trueを返します。
bool operator==(const directory_iterator& right) const;
パラメーター
right
directory_iteratorと比較されるdirectory_iterator。
directory_iterator::operator*
メンバー演算子は myentryを返します。
const directory_entry& operator*() const;
directory_iterator::operator->
メンバー関数は &**thisを返します。
const directory_entry * operator->() const;
directory_iterator::operator++
最初のメンバー関数は increment()を呼び出し、 *thisを返します。 2 番目のメンバー関数は、オブジェクトのコピーを作成し、 increment()を呼び出し、コピーを返します。
directory_iterator& operator++();
directory_iterator operator++(int);
パラメーター
int
ダミー引数。 これは、後置インクリメント演算子とプレフィックスインクリメント演算子を区別するためにのみ使用される C++ 規則です。 C++ 標準では、ダミーの int パラメーターを受け取るには、後置形式が必要です。