PDA

Visualizza la versione completa : [C++] Listare file in maniera ricorsiva


fermat
16-06-2015, 11:09
ciao!

ieri ho testato questo codice per listare file in maniera ricorsiva:


#include
#include

using namespace std;

int callback(const char *path, const struct stat *st, int flags) {
cout << st->st_uid << " " << st->st_gid << " " << path << "n";
return 0;
}

int main(int argc, const char *argv[]) {
return ftw("/etc", callback, 1);
}

funziona, peṛ in verità a me servirebbe altro.
nel senso che questo codice mi mostra a video tutti i files.
io invece vorrei aggiungerli ad un vector, per poi riusarlo.
un suggerimento su come fare (anche non usando ftw ovviamente)?

linoma
16-06-2015, 11:28
Devi usare un vector globale e sostituire il cout in callback con vector.push_back

fermat
16-06-2015, 11:42
Devi usare un vector globale e sostituire il cout in callback con vector.push_back

ciao!
grazie per la risposta.
appena riesco provo!

fermat
20-06-2015, 13:55
alla fine ho fatto coś, e mi sembra funzionare:



#include <iostream>
#include <ftw.h>
#include <vector>
#include <string>

using namespace std;
vector<string> v;

int callback(const char *path, const struct stat *st, int flags) {
v.push_back(path);
return 0;
}

int main(int argc, char** argv) {
int f = ftw("/etc", callback, 1);
vector<string>::iterator it;
for (it = v.begin(); it < v.end(); ++it) {
cout << *it << endl;
}
return 0;
}

Loading