BİLGİ SAYAMIYORUM beta

C++ ile bir dizinin içindeki dosyalar nasıl listelenir?

0

Maalesef C++17 öncesinde bunu yapmanın kendiliğinden hazır bir yolu yok. Boost Dosyalama Modülü bu iş için fazlasıyla kullanılıyormuş mesela onu tavsiye edebilirim ya da MSDN den Microsoft un bu iş için olan kendi tavsiye kodunu inceleyebilirsiniz. Ancak Dirent.h adında daha hızlı işinizi görebileceğiniz bir header da bulunuyor, kodu hatta şu şekilde:

     DIR *dir;
     struct dirent *ent;
     if ((dir = opendir ("c:\\src\\")) != NULL) {
          while ((ent = readdir (dir)) != NULL) {
               printf ("%s\n", ent->d_name); } closedir (dir);
     } else {
          perror ("");
          return EXIT_FAILURE;
     }

Dir işaretçisi dizin yolunu temsil etmektedir. Tüm bunlar iyi hoş da yıl 2017 diyorsanız baya şanslısınız, C++14 te deneysel olarak kullanılan ama 2017 itibariyle yerleşik olan std::filesystem::directory_iterator mevcut, kullanımı da şöyle:

     #include <string>
     #include <iostream>
     #include <filesystem>
     namespace fs = std::filesystem;
     int main() {
          std::string yol = "dizinyolu";
          for (auto & p : fs::directory_iterator(yol))
               std::cout << p << std::endl;
     }

Ayrıca std::filesystem::recursive_directory_iterator ile de alt dizinler içerisinde dolaşabilirsiniz. Eğer merak ediyorsanız bu kütüphanenin C++14 teki kullanımı da namespace fs = std::experimental::filesystem satırı ile mümkün olabiliyordu. 

BENZER 7

Kimse etkileşime girmemiş

ETİKETLER