共用方式為


recursive_directory_iterator 類別

描述輸入反覆運算器,該反覆運算器會逐一排序目錄中的檔案名,可能以遞迴方式遞減到子目錄。 針對反覆運算器 X ,運算式 *X 會評估為類別 directory_entry 的物件,該物件會包裝檔案名及其狀態的任何已知專案。

如需詳細資訊與程式碼範例,請參閱檔案系統巡覽 (C++)

語法

class recursive_directory_iterator;

備註

類別範本會儲存:

  1. 類型 stack<pair<directory_iterator, path>> 為 的物件,在此呼叫 mystack 以用於說明,代表要排序之目錄的巢狀結構

  2. 類型 directory_entrymyentry 為這裡的物件,代表目錄序列中的目前檔案名

  3. 類型 bool 為 的物件,在此呼叫 no_push ,其會記錄是否停用遞迴下降到子目錄

  4. 類型 directory_options 為 的物件,在此呼叫 myoptions ,其會記錄建構時建立的選項

類型 recursive_directory_entry 的預設建構物件在 具有 mystack.top().first 的端序列反覆運算器,並代表序列結尾反覆運算器。 例如,假設目錄 abc 具有專案 def (目錄)、 def/ghi 和 ,程式 jkl 代碼:

for (recursive_directory_iterator next(path("abc")), end; next != end; ++next)
    visit(next->path());

會使用 引數 path("abc/def/ghi")path("abc/jkl") 呼叫 visit。 您可以使用兩種方式來限定透過目錄子樹的排序:

  1. 只有在您使用 值為 directory_options::follow_directory_symlink 的引數建構 recursive_directory_iteratordirectory_options 時,才會掃描目錄符號連結。

  2. 如果您呼叫 disable_recursion_pending ,在遞增期間遇到的後續目錄將不會以遞迴方式掃描。

建構函式

建構函式 描述
recursive_directory_iterator 建構 recursive_directory_iterator

成員函式

成員函數 描述
深度 mystack.size() - 1 回 ,因此 pval 位於深度為零。
disable_recursion_pending 儲存 true 在 中 no_push
increment 依序前進到下一個檔案名。
options 傳回 myoptions
pop 傳回下一個 物件。
recursion_pending 傳回 !no_push

操作員

運算子 描述
operator!= 傳回 !(*this == right)
operator= 預設成員指派運算子會如預期般運作。
operator== true只有在 和 右側 都是 *this 序列結尾反覆運算器,或兩者都不是序列反覆運算器的結尾時,才會傳回 。
operator* 傳回 myentry
operator-> 傳回 &**this
operator++ recursive_directory_iterator 增 。

需求

標頭: < filesystem>

命名空間: std::tr2::sys

recursive_directory_iterator::depth

mystack.size() - 1 回 ,因此 pval 位於深度為零。

int depth() const;

recursive_directory_iterator::disable_recursion_pending

儲存 true 在 中 no_push

void disable_recursion_pending();

recursive_directory_iterator::increment

依序前進到下一個檔案名。

recursive_directory_iterator& increment(error_code& ec) noexcept;

參數

電子商務
指定的錯誤碼。

備註

此函式會嘗試前進到巢狀序列中的下一個檔案名稱。 如果成功,它會將該檔案名儲存在 中 myentry ,否則會產生序列結尾反覆運算器。

recursive_directory_iterator::operator!=

傳回 !(*this == right)

bool operator!=(const recursive_directory_iterator& right) const;

參數

right
比較的recursive_directory_iterator

recursive_directory_iterator::operator=

預設成員指派運算子會如預期般運作。

recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default;
recursive_directory_iterator& operator=(recursive_directory_iterator&&) noexcept = default;

參數

recursive_directory_iterator
複製到 的 recursive_directory_iterator recursive_directory_iterator

recursive_directory_iterator::operator==

true只有在 和 右側 都是 *this 序列結尾反覆運算器,或兩者都不是序列反覆運算器的結尾時,才會傳回 。

bool operator==(const recursive_directory_iterator& right) const;

參數

right
比較的recursive_directory_iterator

recursive_directory_iterator::operator*

傳回 myentry

const directory_entry& operator*() const;

recursive_directory_iterator::operator->

傳回 &**this

const directory_entry * operator->() const;

recursive_directory_iterator::operator++

recursive_directory_iterator 增 。

recursive_directory_iterator& operator++();

recursive_directory_iterator& operator++(int);

參數

int
指定的增量。

備註

第一個成員函式會呼叫 increment() ,然後傳 *this 回 。 第二個成員函式會建立 物件的複本,呼叫 increment() ,然後傳回復本。

recursive_directory_iterator::options

傳回 myoptions

directory_options options() const;

recursive_directory_iterator::pop

傳回下一個 物件。

void pop();

備註

如果 depth() == 0 物件變成序列結尾反覆運算器。 否則,此成員函式會終止掃描目前 (最深) 的目錄,並在次深的目錄繼續掃描。

recursive_directory_iterator::recursion_pending

傳回 !no_push

bool recursion_pending() const;

recursive_directory_iterator::recursive_directory_iterator

建構 recursive_directory_iterator

recursive_directory_iterator() noexcept;
explicit recursive_directory_iterator(const path& pval);

recursive_directory_iterator(const path& pval,
    error_code& ec) noexcept;
recursive_directory_iterator(const path& pval,
    directory_options opts);

recursive_directory_iterator(const path& pval,
    directory_options opts,
    error_code& ec) noexcept;
recursive_directory_iterator(const recursive_directory_iterator&) = default;
recursive_directory_iterator(recursive_directory_iterator&&) noexcept = default;

參數

pval
指定的路徑。

error_code
指定的錯誤碼。

選擇
指定的目錄選項。

recursive_directory_iterator
要從中複製所建構之 recursive_directory_iteratorrecursive_directory_iterator

備註

第一個建構函式會產生序列結尾迭代器。 第二個和第三個建構函式會儲存 false 在 和 directory_options::nonemyoptionsno_push ,然後嘗試開啟並讀取 pval 做為目錄。 如果成功,則會初始化 mystackmyentry 指定巢狀序列中的第一個非目錄檔名,否則會產生序列結尾反覆運算器。

第四個和第五個建構函式的行為與第二和第三個建構函式相同,不同之處在于第一個存放區 會選擇 加入 myoptions 。 預設建構函式的行為會如預期般運作。

另請參閱

標頭檔參考
<filesystem>
檔案系統巡覽 (C++)