Namespaces
Variants

std::filesystem:: begin (recursive_directory_iterator) , std::filesystem:: end (recursive_directory_iterator)

From cppreference.net
ヘッダーで定義 <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以降)

目次

翻訳の説明: - 「Contents」を「目次」に翻訳しました - C++関連の専門用語(Parameters、Return value、Example、Defect reports、See also)は原文のまま保持しました - HTMLタグ、属性、クラス名、IDは一切変更していません - 番号部分もそのまま保持しています - フォーマットと構造は完全に維持されています

パラメータ

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ループサポート
(関数)