名稱空間
變體
操作

std::experimental::filesystem::directory_iterator

來自 cppreference.com
< cpp‎ | experimental‎ | fs
 
 
 
 
定義於標頭檔案 <experimental/filesystem>
class directory_iterator;
(檔案系統技術規範)

directory_iterator 是一個 LegacyInputIterator,它迭代目錄的 directory_entry 元素(但不訪問子目錄)。迭代順序未指定,除了每個目錄條目只訪問一次。特殊路徑名 dotdot-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"

[編輯] 另請參閱

指向目錄及其子目錄內容的迭代器
(類) [編輯]
迭代目錄內容的選項
(列舉) [編輯]
目錄項
(類) [編輯]