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++ 標準要求後綴形式必須使用虛擬的整數參數。