# std::filesystem::recursive_directory_iterator::depth

< cpp‎ | filesystem‎ | recursive directory iterator

int depth() const; |  | (C++17 起)

返回从起始目录到当前被迭代目录的目录层数，即目录层级的当前深度。

起始目录拥有深度 0 ，其子目录拥有深度 1 ，以此类推。

若 *this 是尾迭代器则行为未定义。

### 参数

（无）

### 返回值

目录层级的当前深度。

### 异常

不抛出。

### 示例

此示例用迭代深度计算目录树打印的缩进

    #include <fstream>
    #include <iostream>
    #include <string>
    #include <filesystem>
    namespace fs = std::filesystem;

    int main()
    {
        fs::current_path(fs::temp_directory_path());
        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';
        }
        fs::remove_all("sandbox");
    }

输出：

    "sandbox/a"
     "sandbox/a/b"
      "sandbox/a/b/c"
      "sandbox/a/b/d"
       "sandbox/a/b/d/e"
      "sandbox/a/b/file1.txt"
    "sandbox/syma" -> "a"