std::filesystem::recursive_directory_iterator::depth(3)

NAME
std::filesystem::recursive_directory_iterator::depth - std::filesystem::recursive_directory_iterator::depth

Synopsis
   int depth() const; (since C++17)
   Returns the number of directories from the starting directory to the currently
   iterated directory, i.e. the current depth of the directory hierarchy.
   The starting directory has depth of 0, its subdirectories have depth 1, etc.
   The behavior is undefined if *this is the end iterator.

Parameters
   (none)

Return value
   Current depth of the directory hierarchy.

Exceptions
   Throws nothing.

Example
   this example uses iteration depth to calculate the indentation of a directory tree
   printout // Run this code
 #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");
 }

Output:
 "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"