Lahendatud: hankige failinimi asukohast

Viimane uuendus: 09/11/2023

Muidugi, süveneme teemasse, kuidas C++ abil teelt failinime saada.

Sissejuhatus
Failinime teest eraldamine on programmeerimisel sagedane ülesanne, eriti failihaldusega seotud toimingute puhul. See artikkel annab põhjaliku selgituse selle ülesande täitmiseks C++ abil. Artikli lõpuks saate sellele probleemile lahenduse mõista ja rakendada.

Lahendus
Lahendus hõlmab C++ standardteegi sisseehitatud funktsioonide kasutamist. Teek, millele keskendume, on failisüsteemi teek, mida tutvustati C++17-s. See pakub failide ja kataloogidega manipuleerimiseks erinevaid funktsioone.

#include
std::string get_filename(std::stringi tee){
return std::failisüsteem::tee(tee).failinimi().string();
}

Koodeksi mõistmine
Funktsioon get_filename võtab stringargumendi – tee ja tagastab failinime. Funktsioon kasutab failisüsteemi teeki. Loome failisüsteemi::path objekti antud tee stringiga ja kasutame failinime saamiseks meetodit filename(). Seejärel teisendatakse failinimi string() meetodi abil stringiks ja funktsioon tagastab selle.

  • Esimene rida on koht, kus lisame oma koodi failisüsteemi teegi.
  • Funktsioon get_filename on määratletud stringi argumendi teega.
  • Loome failisüsteemi::path objekti tee stringiga.
  • Failinime saamiseks kutsutakse failisüsteemi::path objektil välja failinime meetod.
  • Seejärel teisendatakse failinimi stringiks, kasutades string() meetodit.

Failisüsteemi teek

C++17 standard tutvustas failisüsteemi teeki, mis koosneb mitmest klassidest ja funktsioonidest, mille eesmärk on teha toiminguid failiteede, failide ja kataloogidega. Ühte selle klassi – filesystem::path – kasutatakse meie lahenduses failinime teest eraldamiseks.

See teek võimaldab teil teha selliseid toiminguid nagu lugemine, kirjutamine, failide ümbernimetamine, kataloogide loomine ja eemaldamine ja nii edasi, lihtsustades oluliselt C++ failisüsteemiga manipuleerimist.

Alternatiivsete meetodite

Juhtudel, kui failisüsteemi teek pole saadaval, saab failinime teelt eraldamiseks kasutada muid meetodeid. Üks alternatiiv hõlmab stringide teegis saadaolevate stringiga manipuleerimise funktsioonide kasutamist. Siin on näide:

#include
std::string get_filename_old(std::stringi tee){
std::size_t found = tee.find_last_of(“/\”);
tagastamistee.substr(leitud+1);
}

Kokkuvõtteks võib öelda, et failinime eraldamine teelt on saavutatav C++ failisüsteemi teegi abil. Oluline on olla kursis teegi funktsioonidega, kuna paljude programmeerimisülesannete puhul on failihaldus levinud.

Seonduvad postitused: