Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::experi...ory_iterator(3) C++ Standard Libarystd::experi...ory_iterator(3)

NAME
       std::experimental::filesystem::recursive_directory_iterator  - std::ex-
       perimental::filesystem::recursive_directory_iterator

Synopsis
	  Defined in header <experimental/filesystem>
	  class	recursive_directory_iterator;	       (filesystem TS)

	  recursive_directory_iterator is an LegacyInputIterator that iterates
       over the
	  directory_entry elements of a	directory, and,	recursively, over  the
       entries of all
	  subdirectories. The iteration	order is unspecified, except that each
       directory entry
	  is visited only once.

	  By  default,	symlinks  are not followed, but	this can be enabled by
       specifying the
	  directory option follow_directory_symlink at construction time.

	  The special pathnames	dot and	dot-dot	are skipped.

	  If the recursive_directory_iterator is advanced past the last	direc-
       tory entry of the
	  top-level directory, it becomes equal	to the default-constructed it-
       erator, also
	  known	as the end iterator.  Two  end	iterators  are	always	equal,
       dereferencing or
	  incrementing the end iterator	is undefined behavior.

	  If  a	 file or a directory is	deleted	or added to the	directory tree
       after the
	  recursive directory iterator has been	 created,  it  is  unspecified
       whether the change
	  would	be observed through the	iterator.

	  If  the directory structure contains cycles, the end iterator	may be
       unreachable.

Member types
	  Member type	    Definition
	  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

Member functions
	  constructor		    constructs a recursive directory iterator
				    (public member function)
	  destructor		    default destructor
				    (public member function)

Observers
	  operator*		    accesses the pointed-to entry
	  operator->		    (public member function)
				    returns the	currently active options  that
       affect the
	  options		    iteration
				    (public member function)
	  depth			    returns the	current	recursion depth
				    (public member function)
				    checks  whether  the recursion is disabled
       for the current
	  recursion_pending	    directory
				    (public member function)

Modifiers
	  operator=		    assigns contents
				    (public member function)
	  increment		    advances to	the next entry
	  operator++		    (public member function)
	  pop			    moves the iterator one level up in the di-
       rectory hierarchy
				    (public member function)
	  disable_recursion_pending disables recursion until the  next	incre-
       ment
				    (public member function)

Non-member functions
	  filesystem::begin(filesystem::recursive_directory_iterator)	range-
       based for loop
	  filesystem::end(filesystem::recursive_directory_iterator)   support
								      (func-
       tion)

	  Additionally,	operator== and operator!= are provided,	either as mem-
       bers or as
	  non-members, as required by LegacyInputIterator

Notes
	  A recursive_directory_iterator typically holds  a  reference-counted
       pointer (to
	  satisfy  shallow-copy	semantics of LegacyInputIterator) to an	imple-
       mentation object,
	  which	holds:

	    * a	container (such	as std::vector)	of non-recursive directory_it-
       erators that
	      forms the	recursion stack
	    * the recursion depth counter (accessible with depth())
	    * the directory options used at construction (accessible with  op-
       tions())
	    * the pending recursion flag (accessible with recursion_pending(),
       may be combined
	      with the directory options to save space)

Example
       // Run this code

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

	int main()
	{
	    fs::create_directories("sandbox/a/b");
	    std::ofstream("sandbox/file1.txt");
	    fs::create_symlink("a", "sandbox/syma");
	    for(const  fs::directory_entry& entry: fs::recursive_directory_it-
       erator("sandbox"))
		std::cout << entry << '\n';
	    fs::remove_all("sandbox");
	}

Possible output:
	"sandbox/a"
	"sandbox/a/b"
	"sandbox/file1.txt"
	"sandbox/syma"

See also
	  directory_iterator an	iterator to the	contents of the	directory
			     (class)
	  directory_entry    a directory entry
			     (class)
	  directory_options  options for iterating directory contents
			     (enum)

http://cppreference.com		  2022.07.31	 std::experi...ory_iterator(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::experimental::filesystem::recursive_directory_iterator&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help