Rozwiązanie...:
#include <iostream>
#include <sstream>
#include <vector>
#include <dirent.h>
#include <string.h>
typedef std::vector<std::string> fileVect;
fileVect getFiles(std::string directory){
if(*(directory.end() - 1) != '/'){
directory += "/";
}
DIR *dir = opendir(directory.c_str());
fileVect tmp;
if(dir){
while(dirent *entry = readdir(dir)){
if(strcmp(entry->d_name, ".") && strcmp(entry->d_name, "..")){
std::string fileaddr = directory + entry->d_name;
tmp.push_back(fileaddr);
if(DIR *dir2 = opendir(fileaddr.c_str())){
closedir(dir2);
fileVect tmp2 = getFiles(fileaddr);
tmp.insert(tmp.end(), tmp2.begin(), tmp2.end());
}
}
}
closedir(dir);
}
return tmp;
}
int main(int argc, char* argv[]){
fileVect files = getFiles("./");
for(fileVect::iterator it = files.begin(); it != files.end(); ++it){
std::cout << *it << std::endl;
}
}