Aracılığıyla paylaş


recursive_directory_iterator Sınıfı

Dizindeki dosya adları üzerinden sıralayan ve muhtemelen özyinelemeli olarak alt dizinlere inen bir giriş yineleyicisini açıklar. Yineleyici Xiçin ifade *X , dosya adını ve durumu hakkında bilinen her şeyi sarmalayan bir sınıf directory_entry nesnesi olarak değerlendirilir.

Daha fazla bilgi ve kod örnekleri için bkz . Dosya Sistemi Gezintisi (C++).

Sözdizimi

class recursive_directory_iterator;

Açıklamalar

Sınıf şablonu depolar:

  1. türündeki stack<pair<directory_iterator, path>>bir nesne, sıralanacak dizinlerin yuvasını temsil eden edat amacıyla burada çağrılır mystack

  2. burada adlı myentry ve dizin dizisindeki geçerli dosya adını temsil eden bir directory_entry nesne

  3. alt dizinlere özyinelemeli azalmanın devre dışı bırakılıp bırakılmadığını kaydeden, burada adı verilen no_push türünde boolbir nesne

  4. burada adı verilen myoptions ve inşaatta oluşturulan seçenekleri kaydeden türünde directory_optionsbir nesne

Türündeki recursive_directory_entry varsayılan bir nesnenin sıra sonu yineleyicisi mystack.top().first vardır ve sıra sonu yineleyicisini temsil eder. Örneğin, girdileri def (bir dizinabc), def/ghive jklile birlikte verilen dizin kodu:

for (recursive_directory_iterator next(path("abc")), end; next != end; ++next)
    visit(next->path());

ve bağımsız değişkenleriyle visit çağrısı yapacaktır path("abc/def/ghi")path("abc/jkl"). Dizin alt ağacı üzerinden sıralamayı iki şekilde niteleyebilirsiniz:

  1. Dizin symlink'i yalnızca değeri directory_options::follow_directory_symlinkolan bir recursive_directory_iteratordirectory_options bağımsız değişkenle oluşturursanız taranır.

  2. çağrısı disable_recursion_pendingyaparsanız, artım sırasında karşılaşılan sonraki bir dizin özyinelemeli olarak taranamaz.

Oluşturucular

Oluşturucu Tanım
recursive_directory_iterator bir recursive_directory_iteratoroluşturur.

Üye işlevleri

Üye işlevi Tanım
Derinlik değerini döndürür mystack.size() - 1, bu nedenle pval sıfır derinliğindedir.
disable_recursion_pending içinde no_pushdepolartrue.
Artış Sırayla sonraki dosya adına ilerler.
Seçenekler myoptions döndürür.
Pop Sonraki nesneyi döndürür.
recursion_pending !no_push döndürür.

İşleçler

Operator Tanım
operator!= !(*this == right) döndürür.
operator= Varsayılan üye atama işleçleri beklendiği gibi davranır.
operator== Yalnızca hem hem de *this sağ, sıra sonu yineleyicileriyse veya her ikisi de sıralı yineleyicilerin sonu değilse döndürürtrue.
Işleç* myentry döndürür.
Işleç-> &**this döndürür.
operator++ recursive_directory_iteratordeğerini artırır.

Gereksinimler

Header:<filesystem>

Ad alanı: std::tr2::sys

recursive_directory_iterator::d epth

değerini döndürür mystack.size() - 1, bu nedenle pval sıfır derinliğindedir.

int depth() const;

recursive_directory_iterator::d isable_recursion_pending

içinde no_pushdepolartrue.

void disable_recursion_pending();

recursive_directory_iterator::increment

Sırayla sonraki dosya adına ilerler.

recursive_directory_iterator& increment(error_code& ec) noexcept;

Parametreler

Ec
Belirtilen hata kodu.

Açıklamalar

İşlev, iç içe dizideki bir sonraki dosya adına ilerlemeye çalışır. Başarılı olursa, bu dosya adını içinde myentrydepolar; aksi takdirde sıra sonu yineleyicisi oluşturur.

recursive_directory_iterator::operator!=

!(*this == right) döndürür.

bool operator!=(const recursive_directory_iterator& right) const;

Parametreler

Doğru
Karşılaştırma için recursive_directory_iterator.

recursive_directory_iterator::operator=

Varsayılan üye atama işleçleri beklendiği gibi davranır.

recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default;
recursive_directory_iterator& operator=(recursive_directory_iterator&&) noexcept = default;

Parametreler

recursive_directory_iterator
içine kopyalanan recursive_directory_iteratorrecursive_directory_iterator.

recursive_directory_iterator::operator==

Yalnızca hem hem de *this sağ, sıra sonu yineleyicileriyse veya her ikisi de sıralı yineleyicilerin sonu değilse döndürürtrue.

bool operator==(const recursive_directory_iterator& right) const;

Parametreler

Doğru
Karşılaştırma için recursive_directory_iterator.

recursive_directory_iterator::operator*

myentry döndürür.

const directory_entry& operator*() const;

recursive_directory_iterator::operator->

&**this döndürür.

const directory_entry * operator->() const;

recursive_directory_iterator::operator++

recursive_directory_iteratordeğerini artırır.

recursive_directory_iterator& operator++();

recursive_directory_iterator& operator++(int);

Parametreler

int
Belirtilen artış.

Açıklamalar

İlk üye işlevi öğesini çağırır increment()ve döndürür *this. İkinci üye işlevi nesnesinin bir kopyasını oluşturur, öğesini çağırır increment()ve ardından kopyayı döndürür.

recursive_directory_iterator::options

myoptions döndürür.

directory_options options() const;

recursive_directory_iterator::p op

Sonraki nesneyi döndürür.

void pop();

Açıklamalar

depth() == 0 Nesne sıra sonu yineleyicisi haline gelirse. Aksi takdirde üye işlevi geçerli (en derin) dizinin taranma işlemini sonlandırır ve sonraki alt derinlikte devam eder.

recursive_directory_iterator::recursion_pending

!no_push döndürür.

bool recursion_pending() const;

recursive_directory_iterator::recursive_directory_iterator

bir recursive_directory_iteratoroluşturur.

recursive_directory_iterator() noexcept;
explicit recursive_directory_iterator(const path& pval);

recursive_directory_iterator(const path& pval,
    error_code& ec) noexcept;
recursive_directory_iterator(const path& pval,
    directory_options opts);

recursive_directory_iterator(const path& pval,
    directory_options opts,
    error_code& ec) noexcept;
recursive_directory_iterator(const recursive_directory_iterator&) = default;
recursive_directory_iterator(recursive_directory_iterator&&) noexcept = default;

Parametreler

Pval
Belirtilen yol.

Hata_kodu
Belirtilen hata kodu.

tercihler
Belirtilen dizin seçenekleri.

recursive_directory_iterator
recursive_directory_iterator Bunun için bir recursive_directory_iterator kopya oluşturulur.

Açıklamalar

İlk oluşturucu bir sıra sonu yineleyicisi oluşturur. İkinci ve üçüncü oluşturucular ve directory_options::noneno_push içinde myoptionsdepolarfalse, ardından pval'i dizin olarak açmayı ve okumayı dener. Başarılı olursa, iç içe dizideki ilk dizin dışı dosya adını belirlemeye ve başlatırlar mystackmyentry ; aksi takdirde sıra sonu yineleyicisi oluştururlar.

Dördüncü ve beşinci oluşturucular, ilk depoda kabul ettikleri durumlar dışında ikinci ve üçüncü ile aynı şekilde davranır.myoptions Varsayılan oluşturucu beklendiği gibi davranır.

Ayrıca bkz.

Üst Bilgi Dosyaları Başvurusu
<dosya sistemi>
Dosya Sistemi Gezintisi (C++)