How can I get the list of files in a directory using C or C++?

前端 未结 27 3273
情书的邮戳
情书的邮戳 2020-11-21 05:30

How can I determine the list of files in a directory from inside my C or C++ code?

I\'m not allowed to execute the ls command and parse the results from

27条回答
  •  自闭症患者
    2020-11-21 06:07

    UPDATE 2017:

    In C++17 there is now an official way to list files of your file system: std::filesystem. There is an excellent answer from Shreevardhan below with this source code:

    #include 
    #include 
    #include 
    namespace fs = std::filesystem;
    
    int main()
    {
        std::string path = "/path/to/directory";
        for (const auto & entry : fs::directory_iterator(path))
            std::cout << entry.path() << std::endl;
    }
    

    Old Answer:

    In small and simple tasks I do not use boost, I use dirent.h which is also available for windows:

    DIR *dir;
    struct dirent *ent;
    if ((dir = opendir ("c:\\src\\")) != NULL) {
      /* print all the files and directories within directory */
      while ((ent = readdir (dir)) != NULL) {
        printf ("%s\n", ent->d_name);
      }
      closedir (dir);
    } else {
      /* could not open directory */
      perror ("");
      return EXIT_FAILURE;
    }
    

    It is just a small header file and does most of the simple stuff you need without using a big template-based approach like boost(no offence, I like boost!).

    The author of the windows compatibility layer is Toni Ronkko. In Unix, it is a standard header.

提交回复
热议问题