Namespaces
Variants

std::experimental::filesystem::recursive_directory_iterator:: depth

From cppreference.net
int depth ( ) const ;
(filesystem TS)

Retourne le nombre de répertoires depuis le répertoire de départ jusqu'au répertoire actuellement itéré, c'est-à-dire la profondeur actuelle de la hiérarchie de répertoires.

Le répertoire de départ a une profondeur de 0 , ses sous-répertoires ont une profondeur de 1 , etc.

Le comportement n'est pas défini si * this est l'itérateur de fin.

Table des matières

Paramètres

(aucun)

Valeur de retour

Profondeur actuelle de la hiérarchie du répertoire.

Exceptions

Ne lance rien.

Exemple

Cet exemple utilise la profondeur d'itération pour calculer l'indentation d'une impression d'arborescence de répertoire.

#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';
    }
    fs::remove_all("sandbox");
}

Sortie :

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