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
処理系
- Clang: 7.0 ✅
- GCC: 8.1 ✅
- ICC: ??
- Visual C++: