Elbette, C++'ın yardımıyla bir yoldan dosya adı alma konusuna geçelim.
Giriş
Dosya adının bir yoldan çıkarılması, programlamada, özellikle de dosya işlemeyi içeren işlemlerde sık yapılan bir görevdir. Bu makalede, bu görevin C++ kullanılarak nasıl gerçekleştirileceğine ilişkin ayrıntılı bir açıklama sağlanmaktadır. Makalenin sonunda bu sorunu anlayıp çözümünü uygulayabileceksiniz.
Çözüm
Çözüm, C++ Standart Kitaplığı tarafından sağlanan yerleşik işlevlerin kullanılmasını içerir. Odaklanacağımız kütüphane C++17'de tanıtılan dosya sistemi kütüphanesidir. Dosyaları ve dizinleri yönetmek için çeşitli işlevler sağlar.
#Dahil etmek
std::string get_filename(std::string yolu){
return std::filesystem::path(path).filename().string();
}
Kodu Anlamak
get_filename işlevi bir dize argümanı (yol) alır ve dosya adını döndürür. İşlev dosya sistemi kitaplığını kullanır. Sağlanan yol dizesiyle bir filesystem::path nesnesi yaratırız ve dosya adını elde etmek için filename() yöntemini kullanırız. Dosya adı daha sonra string() yöntemi kullanılarak bir dizeye dönüştürülür ve işlev tarafından döndürülür.
- İlk satır dosya sistemi kütüphanesini kodumuza dahil ettiğimiz yerdir.
- get_filename işlevi bir dize argüman yolu ile tanımlanır.
- Yol dizesiyle bir filesystem::path nesnesi yaratıyoruz.
- Dosya adını almak için dosya sistemi::yol nesnesinde dosya adı yöntemi çağrılır.
- Dosya adı daha sonra string() yöntemi kullanılarak bir dizeye dönüştürülür.
Dosya Sistemi Kitaplığı
C++17 standardı, dosya yolları, dosyalar ve dizinler üzerinde işlemler gerçekleştirmeyi amaçlayan bir dizi sınıf ve işlevden oluşan dosya sistemi kitaplığını tanıttı. Çözümümüzde dosya adını yoldan çıkarmak için sınıflarından biri olan filesystem::path kullanıldı.
Bu kitaplık, dosyaları okuma, yazma, yeniden adlandırma, dizin oluşturma ve kaldırma gibi işlemleri gerçekleştirmenize olanak tanır ve C++'da dosya sistemi işlemlerini büyük ölçüde basitleştirir.
alternatif Yöntemler
Dosya sistemi kitaplığının mevcut olmadığı durumlarda, dosya adını bir yoldan çıkarmak için başka yöntemler kullanılabilir. Bir alternatif, dize kitaplığında bulunan dize işleme işlevlerinin kullanımını içerir. İşte bir örnek:
#Dahil etmek
std::string get_filename_old(std::string yolu){
std::size_t bulundu = path.find_last_of(“/\”);
return path.substr(bulundu+1);
}
Özetlemek gerekirse, bir yoldan dosya adı çıkarmak C++'daki dosya sistemi kitaplığı kullanılarak gerçekleştirilebilir. Dosya işleme birçok programlama görevinde yaygın olduğundan kütüphanenin işlevlerine aşina olmak önemlidir.