Namespaces
Variants

std::experimental::filesystem:: directory_iterator

From cppreference.net
ヘッダーで定義 <experimental/filesystem>
class directory_iterator ;
(filesystem TS)

directory_iterator は、ディレクトリの LegacyInputIterator であり、ディレクトリ内の directory_entry 要素を反復処理します(ただし、サブディレクトリは訪問しません)。反復順序は未規定ですが、各ディレクトリエントリは一度だけ訪問されます。特別なパス名である dot および dot-dot はスキップされます。

directory_iterator が最後のディレクトリエントリを過ぎて進められると、デフォルト構築されたイテレータ(終端イテレータとも呼ばれる)と等しくなります。2つの終端イテレータは常に等しく、終端イテレータのデリファレンスやインクリメントは未定義動作です。

ディレクトリイテレータが作成された後にファイルやディレクトリが削除または追加された場合、その変更がイテレータを通じて観察されるかどうかは未規定です。

目次

メンバー型

メンバ型 定義
value_type filesystem::directory_entry
difference_type std::ptrdiff_t
pointer const filesystem::directory_entry*
reference const filesystem::directory_entry&
iterator_category std::input_iterator_tag

メンバー関数

ディレクトリイテレータを構築する
(public member function)
(destructor)
デフォルトデストラクタ
(public member function)
内容を代入する
(public member function)
指し示すエントリにアクセスする
(public member function)
次のエントリに進む
(public member function)

非メンバー関数

範囲ベースforループのサポート
(関数)

さらに、 operator == および operator ! = が、 LegacyInputIterator の要件に従って、メンバーまたは非メンバーとして提供されます。

#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    fs::create_directories("sandbox/a/b");
    std::ofstream{"sandbox/file1.txt"};
    std::ofstream{"sandbox/file2.txt"};
    for (const fs::directory_entry& entry : fs::directory_iterator{"sandbox"})
        std::cout << entry << '\n';
    fs::remove_all("sandbox");
}

出力例:

"sandbox/a"
"sandbox/file1.txt"
"sandbox/file2.txt"

関連項目

ディレクトリとそのサブディレクトリの内容へのイテレータ
(クラス)
ディレクトリ内容の反復処理オプション
(列挙型)
ディレクトリエントリ
(クラス)