namespace std::filesystem {
class directory_iterator;
}
概要
directory_iterator
は、ディレクトリ内を走査する入力イテレータクラスである。
このイテレータは指定されたディレクトリ内のファイルを走査するが、ディレクトリ内のディレクトリをさらに走査はしない。再帰的にディレクトリを走査する場合は、std::filesystem::recursive_directory_iterator
クラスを使用する。
ファイルの走査順序は未規定であり、ファイル名の辞書順に走査される保証はない。
メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | C++17 |
~directory_iterator(); |
デストラクタ | C++17 |
operator= |
代入演算子 | C++17 |
operator* |
間接参照演算子 | C++17 |
operator-> |
メンバアクセス演算子 | C++17 |
operator++ |
イテレータを進める | C++17 |
increment |
イテレータを進める | 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::directory_iterator("dir_a")) {
std::cout << x.path() << std::endl;
}
}
出力例
"dir_a/a.txt"
"dir_a/dir_b"
バージョン
言語
- C++17
処理系
- Clang: 7.0 ✅
- GCC: 8.1 ✅
- ICC: ??
- Visual C++: