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 X
iç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:
türündeki
stack<pair<directory_iterator, path>>
bir nesne, sıralanacak dizinlerin yuvasını temsil eden edat amacıyla burada çağrılırmystack
burada adlı
myentry
ve dizin dizisindeki geçerli dosya adını temsil eden birdirectory_entry
nesnealt dizinlere özyinelemeli azalmanın devre dışı bırakılıp bırakılmadığını kaydeden, burada adı verilen
no_push
türündebool
bir nesneburada adı verilen
myoptions
ve inşaatta oluşturulan seçenekleri kaydeden türündedirectory_options
bir 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/ghi
ve jkl
ile 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:
Dizin symlink'i yalnızca değeri
directory_options::follow_directory_symlink
olan birrecursive_directory_iterator
directory_options
bağımsız değişkenle oluşturursanız taranır.çağrısı
disable_recursion_pending
yaparsanı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_iterator oluş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_push depolartrue . |
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_iterator değ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_push
depolartrue
.
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 myentry
depolar; 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_iterator
recursive_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_iterator
değ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_iterator
oluş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::none
no_push
içinde myoptions
depolarfalse
, 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 mystack
myentry
; 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++)
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin