home | help
std::filesy...ator::depth(3)   C++ Standard Libary  std::filesy...ator::depth(3)

NAME
     std::filesystem::recursive_directory_iterator::depth - std::filesystem::re-
     cursive_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 di-
     rectory tree
	printout.

     // Run this code

      #include <filesystem>
      #include <fstream>
      #include <iostream>
      #include <string>
      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() << 1, ' ') << *i;
	      if (fs::is_symlink(i->symlink_status()))
		  std::cout << " -> " << fs::read_symlink(*i);
	      std::cout << '\n';
	  }
	  fs::remove_all("sandbox");
      }

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

http://cppreference.com 	   2024.06.10	    std::filesy...ator::depth(3)

home | help