Sikker på, lad os overveje en temaartikel "Etablering af en biblioteksfortegnelse med C++: En omfattende løsning". Sådan vil jeg strukturere denne artikel:
Kataloglister letter adgangen til vores filsystems forskellige filer. Selvom der er mange måder at generere biblioteksfortegnelser på, er en effektiv tilgang ved at udnytte mulighederne i C++ programmeringssproget. Denne praktiske metode giver os mulighed for at liste alle filer og undermapper i en given mappe ved at drage fordel af C++ biblioteker og funktioner.
Løsningen til Directory Listing
For at etablere en mappeliste ved hjælp af C++, kan vi bruge filsystem bibliotek. Dette bibliotek blev introduceret i C++17 og giver en standardiseret måde at manipulere filer og mapper på. Vi kan oprette, læse, opdatere og slette filer og mapper ved hjælp af denne klasse. Hovedfunktionerne involveret i vores løsning vil være 'directory_iterator' og 'recursive_directory_iterator'.
#include
#include
navneområde fs = std::filsystem;
void liste_filer(const fs::sti &sti){
for(const auto &entry: fs::directory_iterator(sti)){
std::cout << entry.path() << "n"; } } int main() { list_files("."); returnere 0; } [/kode]
En forklaring af kodekset
I den givne kode har vi udnyttet filsystem bibliotek for at generere en liste over alle filer i en valgt mappe. Vi har defineret en funktion list_files, der bruger en 'directory_iterator' til at gå gennem hver fil i mappen og udskrive stien. Det "." i list_files funktion kaldet repræsenterer den aktuelle mappe.
Dyk dybere ned i filsystembiblioteket
Som nævnt tidligere filsystem bibliotek er et kraftfuldt værktøj til fil- og biblioteksoperationer. Udover 'directory_iterator', giver det også nyttige klasser som 'sti', 'file_status', 'file_type' osv., til omfattende manipulation af filer og mapper.
Udforsker directory_iterator & recursive_directory_iterator
'directory_iterator' er en klasse i filsystem bibliotek, der tillader iteration gennem alle filer i en specificeret mappe. Hvis vi ønsker at liste alle filer, ikke kun i den aktuelle mappe, men også i alle undermapper, kunne vi bruge 'recursive_directory_iterator'.
void list_all_files(const fs::sti &sti){
for(const auto &entry: fs::recursive_directory_iterator(sti)){
std::cout << entry.path() << "n"; } } int main() { liste_alle_filer("."); returnere 0; } [/code] Denne kode er analog med det foregående eksempel, men bruger 'recursive_directory_iterator', der navigerer gennem alle undermapper og viser alle filer i dem.