<experimental/filesystem> directory_iterator 類別

Important

本頁描述了來自 ISO C++ 檔案系統技術規範(N4100)預標準<experimental/filesystem>實作的類別directory_iterator。 這個 API 與 C++17 directory_iterator 類別 <filesystem>不同。 它使用不同的簽名,包括較窄且無 directory_options 過載的構造子集合。 該實驗性實作自 Microsoft Visual C++(MSVC)14.51 工具組起被移除。 新程式碼應該改用 C++17 directory_iterator 類別。

描述一個輸入迭代器,會序列序列於目錄中的檔名。 對於迭代器 X,該表達 *X 式會評估為一個類別物件 directory_entry ,包裹檔案名稱及其狀態的所有已知資訊。

這個類別儲存一個型別path為 的物件,這裡為說明而呼叫mydir,代表要序列的目錄名稱,以及一個類型myentry為 directory_entry 的物件,稱為 here,代表目錄序列中目前的檔名。 預設的建構物件 directory_entry 類型為空 mydir 路徑名稱,代表序列結束迭代器。

例如,給定一個包含 和 defghi的目錄abc,程式碼:

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

呼叫 visit 參數為 path("abc/def")path("abc/ghi")和 。

語法

class directory_iterator;

建構函數

建構函式 Description
directory_iterator 建立一個輸入迭代器,在目錄中序列檔案名稱。

成員函式

成員函數 Description
increment 嘗試進入目錄中的下一個檔名。

Operators

Operator Description
operator!= 傳回 !(*this == right)。
operator= 預設的成員指派運算子會如預期般運作。
operator== 只有當 和 right 都是*this序列結束迭代器,或兩者都不是序列結束迭代器時,才回傳true。
operator* 傳回 myentry。
operator-> 傳回 &**this。
operator++ 呼叫 increment(),然後返回 *this,或複製物件,呼叫 increment(),然後回傳該複製。

Requirements

標頭:<experimental/filesystem>

命名空間:std::experimental::filesystem

directory_iterator::directory_iterator

第一個建構子產生一個序列結束迭代器。 承接 pval 參數的構造子會將其儲存在 mydir中,然後嘗試開啟並讀取 mydir 為目錄。 若成功,則將第一個檔名儲存在 的 myentry目錄中;否則會產生序列結束迭代器。 接收參數 ec 的超載會回報錯誤, ec 而不是拋出例外。 複製移動構造子的行為如預期般運作。

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

directory_iterator(const path& pval, error_code& ec) noexcept;
directory_iterator(const directory_iterator&) = default;
directory_iterator(directory_iterator&&) = default;

參數

pval
儲存的檔名路徑。

ec
狀態錯誤碼。

directory_iterator
儲存的物件。

directory_iterator::increment

函式嘗試推進到目錄中的下一個檔名。 若成功,則將該檔名儲存在 myentry;否則會產生序列結束迭代器。

directory_iterator& increment(error_code& ec) noexcept;

參數

ec
狀態錯誤碼。

directory_iterator::operator!=

運算子返回 !(*this == right)。

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

參數

right
directory_iterator這個存在與directory_iterator

directory_iterator::operator=

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

directory_iterator& operator=(const directory_iterator&) = default;
directory_iterator& operator=(directory_iterator&&) = default;

參數

right
這個directory_iterator存在被複製進了directory_iterator

directory_iterator::operator==

運算子僅在 *this 和 right 皆為序列末迭代器,或兩者皆非序列末迭代器時返回true。

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

參數

right
directory_iterator這個存在與directory_iterator

directory_iterator::operator*

成員運算子返回 myentry。

const directory_entry& operator*() const;

directory_iterator::operator->

成員函數回傳 &**this。

const directory_entry * operator->() const;

directory_iterator::operator++

第一個成員函數呼叫 increment(),然後返回 *this。 第二個成員函式會複製物件,呼叫 increment(),然後回傳該複製。

directory_iterator& operator++();
directory_iterator operator++(int);

參數

int
愚蠢的爭論。 這是 C++ 的慣例,僅用來區分後綴的增量運算子與前綴的增量運算子。 C++ 標準要求後綴形式必須使用虛擬的整數參數。

參見

<experimental/filesystem>
directory_entry 類別