Рекурсивная печать файлов проекта

122
20 марта 2019, 19:50

Как в c++ рекурсивно напечатать названия всех файлов в директории, переданной параметром программе? Например, для следующей структуры

--project
---src
----main.cpp
---include
----stdafx.h
---debug
----main
---Makefile

надо, чтобы вызов debug/main . печатал названия всех файлов проекта.

Answer 1

Только Linux (если понравится):

// g++ -Wall -Wpedantic writedir.cpp
# include <errno.h>
# include <sys/types.h>
# include <dirent.h>
# include <iostream>
# include <string.h>
void  showdir(char const * dirname,int depth){
  errno = 0 ;
  DIR * dir = opendir(dirname);
  if(errno) return;
  struct  dirent  * result;
  do{
    result  = readdir(dir);
    if(not result)  break;
    for(int i=depth;i>0;){--i;std::cout<<"-";}
    std::cout<<result->d_name<<"\n";
    if( (strcmp(result->d_name,".") not_eq 0) and
        (strcmp(result->d_name,"..") not_eq 0))
      showdir(result->d_name,depth+1);
  }while(true);
  closedir(dir);}
int main(){
  showdir(".",0);
  return  0;}
Answer 2

Имея под боком std::filesystem из C++17 проблема по сути решается одним единственным циклом с recursive_directory_iterator:

for(auto& p: fs::recursive_directory_iterator("project"))
    std::cout << p << '\n';

Для проверки см. тут.

READ ALSO
Практическое применение std::atexit

Практическое применение std::atexit

Сегодня я узнал о существовании функции atexitЧитая мануалы б ней, не могу понять, насколько практически необходимо использовать эту функцию,...

170
Вызвать метод из одной активности в другой

Вызвать метод из одной активности в другой

Не могли бы, пожалуйста, подсказать, как правильно вызвать (если это возможно) метод из одной активности в другой? Я прочитал за наследование,...

154
Изменить fragment 2 из fragment 1

Изменить fragment 2 из fragment 1

Условия: Имеется приложение с Activity и тремя fragment'ами, которые можно листать смахивая влево - вправо как страницы (Этот эффект осуществляется...

164
Как вытащить пароли с Google Chrome используя Java? [закрыт]

Как вытащить пароли с Google Chrome используя Java? [закрыт]

Хотелось бы создать приложение которое вытащит пароли с Google Chrome которые лежат тут C:\Users\elnur\AppData\Local\Google\Chrome\User Data\Default

141