recursive_directory_iterator 類別
描述輸入反覆運算器,該反覆運算器會逐一排序目錄中的檔名,可能以遞歸方式遞減到子目錄。 針對反覆運算器 X
,表達式 *X
會評估為類別 directory_entry
的物件,該物件會包裝檔名及其狀態的任何已知專案。
如需詳細資訊與程式碼範例,請參閱檔案系統巡覽 (C++)。
語法
class recursive_directory_iterator;
備註
類別範本會儲存:
類型
stack<pair<directory_iterator, path>>
為的物件,在此呼叫mystack
以用於說明,代表要排序之目錄的巢狀結構類型
directory_entry
myentry
為這裡的物件,代表目錄序列中的目前檔名類型
bool
為的物件,在此呼叫no_push
,其會記錄是否停用遞歸下降到子目錄類型
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。 您可以使用兩種方式來限定透過目錄子樹的排序:
只有在您使用 值為
directory_options::follow_directory_symlink
的自變數建構recursive_directory_iterator
directory_options
時,才會掃描目錄符號連結。如果您呼叫
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_iterator
的 recursive_directory_iterator
。
備註
第一個建構函式會產生序列結尾迭代器。 第二個和第三個建構函式會儲存false
在 和 directory_options::none
中myoptions
no_push
,然後嘗試開啟並讀取 pval 做為目錄。 如果成功,則會初始化 mystack
並 myentry
指定巢狀序列中的第一個非目錄檔名,否則會產生序列結尾反覆運算器。
第四個和第五個建構函式的行為與第二和第三個建構函式相同,不同之處在於第一個存放區 會選擇 加入 myoptions
。 默認建構函式的行為會如預期般運作。