名稱空間
變體
操作

std::experimental::filesystem::recursive_directory_iterator::disable_recursion_pending

來自 cppreference.com
 
 
實驗性
技術規範
檔案系統庫 (檔案系統 TS)
庫基礎 (庫基礎 TS)
庫基礎 2 (庫基礎 TS v2)
庫基礎 3 (庫基礎 TS v3)
並行性擴充套件 (並行性 TS)
並行性擴充套件 2 (並行性 TS v2)
併發性擴充套件 (併發性 TS)
併發擴充套件 2 (併發 TS v2)
概念 (概念 TS)
範圍 (範圍 TS)
反射 (反射 TS)
數學特殊函式 (特殊函式 TR)
實驗性非 TS
模式匹配
線性代數
std::execution
契約
2D 圖形
 
 
 
void disable_recursion_pending();
(filesystem TS)

停用對當前引用子目錄(如果有)的遞迴。

此呼叫以一種方式修改迭代器上的待定遞迴標誌,使得下次呼叫 increment 時,即使當前正在引用尚未訪問的子目錄,迭代器也會在當前目錄內前進。

待定遞迴標誌的狀態可以透過 recursion_pending() 查詢,此呼叫後其為 false。在 increment 之後,它會重置為 true,其初始值也為 true

如果 *this 是末尾迭代器,則行為未定義。

目錄

[編輯] 引數

(無)

[編輯] 返回值

(無)

[編輯] 異常

可能丟擲實現定義的異常。

[編輯] 示例

#include <experimental/filesystem>
#include <fstream>
#include <iostream>
#include <string>
namespace fs = std::experimental::filesystem;
 
int main()
{
    fs::create_directories("sandbox/a/b/c");
    fs::create_directories("sandbox/a/b/d/e");
    std::ofstream("sandbox/a/b/file1.txt");
    fs::create_symlink("a", "sandbox/syma");
    for (auto i = fs::recursive_directory_iterator("sandbox");
             i != fs::recursive_directory_iterator(); ++i)
    {
        std::cout << std::string(i.depth(), ' ') << *i;
        if (fs::is_symlink(i->symlink_status()))
            std::cout << " -> " << fs::read_symlink(*i);
        std::cout << '\n';
 
        // do not descend into "b"
        if (i->path().filename() == "b")
            i.disable_recursion_pending();
    }
    fs::remove_all("sandbox");
}

輸出

"sandbox/a"
 "sandbox/a/b"
"sandbox/syma" -> "a"

[編輯] 另請參閱

檢查當前目錄是否停用遞迴
(public 成員函式) [編輯]
前進到下一個條目
(public 成員函式) [編輯]