Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C++] Listare file in maniera ricorsiva

    ciao!

    ieri ho testato questo codice per listare file in maniera ricorsiva:
    codice:
    #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, però 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)?

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Devi usare un vector globale e sostituire il cout in callback con vector.push_back
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Quote Originariamente inviata da linoma Visualizza il messaggio
    Devi usare un vector globale e sostituire il cout in callback con vector.push_back
    ciao!
    grazie per la risposta.
    appena riesco provo!

  4. #4
    alla fine ho fatto così, e mi sembra funzionare:

    codice:
    #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;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.