最終更新日時(UTC):
が更新

履歴 編集

class
<filesystem>

std::filesystem::recursive_directory_iterator(C++17)

namespace std::filesystem {
  class recursive_directory_iterator;
}

概要

recursive_directory_iteratorは、ディレクトリ内を再帰的に走査する入力イテレータクラスである。

std::filesystem::directory_iteratorクラスは指定されたディレクトリ直下のファイルを走査するが、このイテレータはディレクトリ内のディレクトリも再帰的に走査する。

ファイルの走査順序は未規定であり、ファイル名の辞書順に走査される保証はない。

メンバ関数

構築・破棄

名前 説明 対応バージョン
(constructor) コンストラクタ C++17
~recursive_directory_iterator(); デストラクタ C++17
operator= 代入演算子 C++17

観測

名前 説明 対応バージョン
options 走査オプションを取得する C++17
depth ディレクトリの深さを取得する C++17
recursion_pending 再帰しないかどうかが未決定かを確認する C++17

変更

名前 説明 対応バージョン
operator* 間接参照演算子 C++17
operator-> メンバアクセス演算子 C++17
operator++ イテレータを進める C++17
increment イテレータを進める C++17
pop そのディレクトリの走査を中断する C++17
disable_recursion_pending 再帰を止める C++17

メンバ型

名前 説明 対応バージョン
iterator_category イテレータ種別 input_iterator_tag C++17
value_type 要素型 directory_entry C++17
difference_type イテレータの差を表す符号あり整数型 std::ptrdiff_t C++17
pointer 要素へのポインタ型 const directory_entry* C++17
reference 要素へのポインタ型 const directory_entry& C++17

非メンバ関数

範囲

名前 説明 対応バージョン
begin 先頭要素へのイテレータを取得する C++17
end 最後尾要素の次を指すイテレータを取得する C++17

比較演算子

名前 説明 対応バージョン
operator== 等値比較 C++17
operator!= 非等値比較 C++17

#include <iostream>
#include <filesystem>
#include <fstream>

namespace fs = std::filesystem;

int main()
{
  fs::create_directory("dir_a");
  std::ofstream{"dir_a/a.txt"};

  fs::create_directory("dir_a/dir_b");
  std::ofstream{"dir_a/dir_b/b.txt"};

  // dir_aディレクトリに含まれる全ファイルを再帰的に出力
  for (const fs::directory_entry& x : fs::recursive_directory_iterator("dir_a")) {
    std::cout << x.path() << std::endl;
  }
}

出力例

"dir_a/a.txt"
"dir_a/dir_b"
"dir_a/dir_b/b.txt"

バージョン

言語

  • C++17

処理系