std::experimental::filesystem::directory_iterator
來自 cppreference.com
< cpp | experimental | fs
定義於標頭檔案 <experimental/filesystem> |
||
class directory_iterator; |
(檔案系統技術規範) | |
directory_iterator
是一個 LegacyInputIterator,它迭代目錄的 directory_entry 元素(但不訪問子目錄)。迭代順序未指定,除了每個目錄條目只訪問一次。特殊路徑名 dot 和 dot-dot 會被跳過。
如果 directory_iterator
超出最後一個目錄條目,它將等同於預設構造的迭代器,也稱為結束迭代器。兩個結束迭代器總是相等的,解引用或遞增結束迭代器是未定義行為。
如果在建立目錄迭代器後,檔案或目錄被刪除或新增到目錄樹中,則迭代器是否會觀察到此更改是未指定的。
目錄 |
[編輯] 成員型別
成員型別 | 定義 |
value_type
|
filesystem::directory_entry
|
difference_type
|
std::ptrdiff_t
|
pointer
|
const filesystem::directory_entry*
|
reference
|
const filesystem::directory_entry&
|
iterator_category
|
std::input_iterator_tag
|
[編輯] 成員函式
構造目錄迭代器 (public member function) | |
(解構函式) |
預設解構函式 (public member function) |
賦值內容 (public member function) | |
訪問指向的條目 (public member function) | |
前進到下一個條目 (public member function) |
[編輯] 非成員函式
支援基於範圍的 for 迴圈 (函式) |
此外,還提供了 operator== 和 operator!=,作為成員或非成員,由 LegacyInputIterator 要求。
[編輯] 示例
執行此程式碼
#include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::create_directories("sandbox/a/b"); std::ofstream{"sandbox/file1.txt"}; std::ofstream{"sandbox/file2.txt"}; for (const fs::directory_entry& entry : fs::directory_iterator{"sandbox"}) std::cout << entry << '\n'; fs::remove_all("sandbox"); }
可能的輸出
"sandbox/a" "sandbox/file1.txt" "sandbox/file2.txt"
[編輯] 另請參閱
指向目錄及其子目錄內容的迭代器 (類) | |
迭代目錄內容的選項 (列舉) | |
目錄項 (類) |