Naravno, pozabavimo se temom dobivanja naziva datoteke iz staze uz pomoć C++.
Uvod
Izdvajanje naziva datoteke iz staze je čest zadatak u programiranju, posebno u operacijama koje uključuju rukovanje datotekama. Ovaj članak daje detaljno objašnjenje kako izvršiti ovaj zadatak koristeći C++. Do kraja članka moći ćete razumjeti i implementirati rješenje ovog problema.
Rješenje
Rješenje uključuje korištenje ugrađenih funkcija koje pruža C++ standardna biblioteka. Biblioteka na koju ćemo se fokusirati je biblioteka datotečnog sustava, predstavljena u C++17. Omogućuje razne funkcije za rukovanje datotekama i direktorijima.
#include
std::string get_filename(std::string staza){
return std::filesystem::path(path).filename().string();
}
Razumijevanje Kodeksa
Funkcija get_filename uzima argument niza – putanju i vraća naziv datoteke. Funkcija koristi biblioteku datotečnog sustava. Stvaramo objekt datotečni sustav::staza s navedenim nizom staze i koristimo metodu filename() za dobivanje naziva datoteke. Naziv datoteke se zatim pretvara u niz pomoću metode string() i vraća ga funkcija.
- Prvi red je mjesto gdje uključujemo biblioteku datotečnog sustava u naš kod.
- Funkcija get_filename definirana je stazom argumenta niza.
- Stvaramo filesystem::path objekt s nizom staze.
- Metoda naziva datoteke poziva se na objektu datotečni sustav::put da bi se dobio naziv datoteke.
- Naziv datoteke se zatim pretvara u niz pomoću metode string().
Biblioteka datotečnog sustava
Standard C++17 uveo je biblioteku datotečnog sustava koja se sastoji od niza klasa i funkcija usmjerenih na izvođenje operacija na stazama datoteka, datotekama i direktorijima. Jedna od njegovih klasa – filesystem::path, koristi se u našem rješenju za izdvajanje naziva datoteke iz staze.
Ova biblioteka vam omogućuje izvođenje operacija kao što su čitanje, pisanje, preimenovanje datoteka, stvaranje i uklanjanje direktorija i tako dalje, drastično pojednostavljujući manipulacije datotečnim sustavom u C++.
Alternativne metode
U slučajevima kada biblioteka datotečnog sustava nije dostupna, mogu se koristiti druge metode za izdvajanje naziva datoteke iz staze. Jedna alternativa uključuje korištenje funkcija za manipulaciju nizovima dostupnih u knjižnici nizova. Evo primjera:
#include
std::string get_filename_old(std::string staza){
std::size_t found = path.find_last_of(“/\”);
povratni put.substr(pronađen+1);
}
Ukratko, izdvajanje naziva datoteke iz staze moguće je pomoću biblioteke datotečnog sustava u C++. Bitno je upoznati se s funkcijama biblioteke jer je rukovanje datotekama prevladavajuće u mnogim programskim zadacima.