Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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>>, dipanggilmystackdi sini untuk tujuan eksposisi, yang mewakili sarang direktori yang akan diurutkanobjek jenis
directory_entryyang disebutmyentrydi sini, yang mewakili nama file saat ini dalam urutan direktoriobjek jenis
bool, dipanggilno_pushdi sini, yang merekam apakah turun rekursif ke subdirektori dinonaktifkanobjek jenis
directory_options, yang disebutmyoptionsdi 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_iteratordengan argumen yangdirectory_optionsnilainya 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 |
|---|---|
| dalam | mystack.size() - 1Mengembalikan , 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. |
Operator
| 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() - 1Mengembalikan , 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_iteratordalam .
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.
Lihat juga
Referensi File Header
<sistem file>
Navigasi Sistem File (C++)