Kelas recursive_directory_iterator
Menjelaskan iterator input yang mengurutkan melalui nama file dalam direktori, mungkin turun ke subdirektori secara rekursif. Untuk iterator X
, ekspresi *X
mengevaluasi ke objek kelas directory_entry
yang membungkus nama file dan apa pun yang diketahui tentang statusnya.
Untuk informasi selengkapnya dan contoh kode, lihat Navigasi Sistem File (C++).
Sintaks
class recursive_directory_iterator;
Keterangan
Templat kelas menyimpan:
objek jenis
stack<pair<directory_iterator, path>>
, dipanggilmystack
di sini untuk tujuan eksposisi, yang mewakili sarang direktori yang akan diurutkanobjek jenis
directory_entry
yang disebutmyentry
di sini, yang mewakili nama file saat ini dalam urutan direktoriobjek jenis
bool
, dipanggilno_push
di sini, yang merekam apakah turun rekursif ke subdirektori dinonaktifkanobjek jenis
directory_options
, yang disebutmyoptions
di sini, yang mencatat opsi yang ditetapkan saat konstruksi
Objek jenis recursive_directory_entry
yang dibangun default memiliki iterator akhir urutan pada mystack.top().first
dan mewakili iterator akhir urutan. Misalnya, mengingat direktori abc
dengan entri def
(direktori), def/ghi
, dan jkl
, kode:
for (recursive_directory_iterator next(path("abc")), end; next != end; ++next)
visit(next->path());
akan memanggil kunjungi dengan argumen path("abc/def/ghi")
dan path("abc/jkl")
. Anda dapat memenuhi syarat pengurutan melalui subtree direktori dengan dua cara:
Symlink direktori akan dipindai hanya jika Anda membuat
recursive_directory_iterator
dengan argumen yangdirectory_options
nilainya adalahdirectory_options::follow_directory_symlink
.Jika Anda memanggil
disable_recursion_pending
, direktori berikutnya yang ditemui selama kenaikan tidak akan dipindai secara rekursif.
Konstruktor
Konstruktor | Deskripsi |
---|---|
recursive_directory_iterator | Membangun sebuah recursive_directory_iterator . |
Fungsi anggota
Fungsi anggota | Deskripsi |
---|---|
Kedalaman | mystack.size() - 1 Mengembalikan , demikian juga pval pada kedalaman nol. |
disable_recursion_pending | true Menyimpan di no_push . |
Kenaikan | Maju ke nama file berikutnya secara berurutan. |
opsi | Menampilkan myoptions . |
Pop | Mengembalikan objek berikutnya. |
recursion_pending | Menampilkan !no_push . |
Operators
Operator | Deskripsi |
---|---|
operator!= | Menampilkan !(*this == right) . |
operator= | Operator penetapan anggota default berulah seperti yang diharapkan. |
operator== | true Mengembalikan hanya jika keduanya *this dan kanan adalah iterator akhir urutan atau keduanya bukan end-of-sequence-iterators. |
Operator* | Menampilkan myentry . |
Operator-> | Menampilkan &**this . |
operator++ | Menaikkan recursive_directory_iterator . |
Persyaratan
Header:<filesystem>
Namespace: std::tr2::sys
recursive_directory_iterator::d epth
mystack.size() - 1
Mengembalikan , demikian juga pval
pada kedalaman nol.
int depth() const;
recursive_directory_iterator::d isable_recursion_pending
true
Menyimpan di no_push
.
void disable_recursion_pending();
recursive_directory_iterator::kenaikan
Maju ke nama file berikutnya secara berurutan.
recursive_directory_iterator& increment(error_code& ec) noexcept;
Parameter
Ec
Kode kesalahan yang ditentukan.
Keterangan
Fungsi ini mencoba untuk maju ke nama file berikutnya dalam urutan berlapis. Jika berhasil, ia menyimpan nama file tersebut di myentry
; jika tidak, ia menghasilkan iterator akhir urutan.
recursive_directory_iterator::operator!=
Menampilkan !(*this == right)
.
bool operator!=(const recursive_directory_iterator& right) const;
Parameter
right
Recursive_directory_iterator untuk perbandingan.
recursive_directory_iterator::operator=
Operator penetapan anggota default berulah seperti yang diharapkan.
recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default;
recursive_directory_iterator& operator=(recursive_directory_iterator&&) noexcept = default;
Parameter
recursive_directory_iterator
recursive_directory_iterator sedang disalin ke recursive_directory_iterator
dalam .
recursive_directory_iterator::operator==
true
Mengembalikan hanya jika keduanya *this
dan kanan adalah iterator akhir urutan atau keduanya bukan end-of-sequence-iterators.
bool operator==(const recursive_directory_iterator& right) const;
Parameter
right
Recursive_directory_iterator untuk perbandingan.
recursive_directory_iterator::operator*
Menampilkan myentry
.
const directory_entry& operator*() const;
recursive_directory_iterator::operator->
Menampilkan &**this
.
const directory_entry * operator->() const;
recursive_directory_iterator::operator++
Menaikkan recursive_directory_iterator
.
recursive_directory_iterator& operator++();
recursive_directory_iterator& operator++(int);
Parameter
int
Kenaikan yang ditentukan.
Keterangan
Fungsi anggota pertama memanggil increment()
, lalu mengembalikan *this
. Fungsi anggota kedua membuat salinan objek, memanggil increment()
, lalu mengembalikan salinan.
recursive_directory_iterator::options
Menampilkan myoptions
.
directory_options options() const;
recursive_directory_iterator::p op
Mengembalikan objek berikutnya.
void pop();
Keterangan
Jika depth() == 0
objek menjadi iterator akhir urutan. Jika tidak, fungsi anggota mengakhiri pemindaian direktori saat ini (terdalam) dan melanjutkan pada kedalaman bawah berikutnya.
recursive_directory_iterator::recursion_pending
Menampilkan !no_push
.
bool recursion_pending() const;
recursive_directory_iterator::recursive_directory_iterator
Membangun sebuah recursive_directory_iterator
.
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;
Parameter
pval
Jalur yang ditentukan.
error_code
Kode kesalahan yang ditentukan.
Memilih
Opsi direktori yang ditentukan.
recursive_directory_iterator
Yang recursive_directory_iterator
dibangun recursive_directory_iterator
adalah salinan.
Keterangan
Konstruktor pertama menghasilkan iterator akhir urutan. Konstruktor kedua dan ketiga menyimpan false
dalam no_push
dan directory_options::none
di myoptions
, lalu mencoba membuka dan membaca pval sebagai direktori. Jika berhasil, mereka menginisialisasi mystack
dan myentry
untuk menunjuk nama file non-direktori pertama dalam urutan berlapis; jika tidak, mereka menghasilkan iterator akhir urutan.
Konstruktor keempat dan kelima berperilaku sama dengan yang kedua dan ketiga, kecuali bahwa mereka pertama kali menyimpan ikut serta dalam myoptions
. Konstruktor default berperilaku seperti yang diharapkan.
Baca juga
Referensi File Header
<Filesystem>
Navigasi Sistem File (C++)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk