std::filesystem:: begin (recursive_directory_iterator) , std::filesystem:: end (recursive_directory_iterator)
From cppreference.net
<
cpp
|
filesystem
|
recursive directory iterator
|
ヘッダーで定義
<filesystem>
|
||
|
recursive_directory_iterator begin
(
recursive_directory_iterator iter
)
noexcept
;
|
(1) | (C++17以降) |
|
recursive_directory_iterator end
(
recursive_directory_iterator
)
noexcept
;
|
(2) | (C++17以降) |
1)
iter
を変更せずに返します。
2)
デフォルト構築された
recursive_directory_iterator
を返します。これは終端イテレータとして機能します。引数は無視されます。
これらの非メンバ関数は、
recursive_directory_iterator
を範囲ベースforループで使用できるようにし
、
recursive_directory_iterator
を
range
型にする
(C++20以降)
。
目次 |
パラメータ
| iter | - |
a
recursive_directory_iterator
|
戻り値
1)
iter
変更なし。
2)
終了イテレータ(デフォルト構築された
recursive_directory_iterator
)。
例
このコードを実行
#include <cstdlib> #include <filesystem> #include <fstream> #include <iostream> namespace fs = std::filesystem; int main() { fs::current_path(fs::temp_directory_path()); fs::create_directories("sandbox/a/b"); std::ofstream("sandbox/file1.txt"); fs::create_symlink("a", "sandbox/syma"); std::cout << "OS固有のコマンド 'tree' を使用したディレクトリ構造の表示:\n"; std::system("tree --noreport sandbox"); std::cout << "\nディレクトリイテレータを使用したディレクトリ構造の表示:\n"; for (auto& p : fs::recursive_directory_iterator("sandbox")) std::cout << p << '\n'; fs::remove_all("sandbox"); }
出力例:
OS固有のコマンド 'tree' を使用したディレクトリ構造の表示: sandbox ├── a │ └── b ├── file1.txt └── syma -> a ディレクトリイテレータを使用したディレクトリ構造の表示: "sandbox/syma" "sandbox/file1.txt" "sandbox/a" "sandbox/a/b"
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 3480 | C++17 |
end
は引数を参照で受け取っていた
|
引数を値で受け取る |
関連項目
|
範囲ベースforループサポート
(関数) |