2009-06-01 4 views
2

Supposons que je souhaite écrire ls ou dir. comment puis-je obtenir la liste des fichiers dans un répertoire donné? quelque chose d'équivalent de .NET Directory.GetFiles, et des informations supplémentaires.comment obtenir des noms de fichiers à partir du dossier en C++

pas sûr de la syntaxe de chaîne, mais:

string[] filePaths = Directory.GetFiles(@"c:\MyDir\"); 
+2

en double: http://stackoverflow.com/questions/612097/how-can-i-get-a-list-of-files -in-a-directory-using-c-or-c – ChrisN

+0

D'accord - se fermerait si SO m'a permis – MSalters

Répondre

23

Découvrez boost::filesystem, une bibliothèque portable et excellente.

Modifier: Un exemple de la bibliothèque:

int main(int argc, char* argv[]) 
{ 
    std::string p(argc <= 1 ? "." : argv[1]); 

    if (is_directory(p)) 
    { 
    for (directory_iterator itr(p); itr!=directory_iterator(); ++itr) 
    { 
     cout << itr->path().filename() << ' '; // display filename only 
     if (is_regular_file(itr->status())) cout << " [" << file_size(itr->path()) << ']'; 
     cout << '\n'; 
     } 
    } 
    else cout << (exists(p) : "Found: " : "Not found: ") << p << '\n'; 

    return 0; 
} 
+0

+1: code C++ portable. –

+0

Je voudrais savoir BOOST mieux, je l'ai installé sur Windows mais je me suis coincé quand j'ai essayé de l'utiliser de VS. Beaucoup plus propre que ce vilain winAPI. – Nefzen

-3

Cette plate-forme est totalement depeanded.
Si vous utilisez Windows, utilisez WINAPI comme suggéré.

1

Sous Windows: FindFirstFile, FindNextFile et FindClose peuvent être utilisés pour lister les fichiers dans un répertoire spécifié.

code pseudo:

Find the first file in the directory. 
do 
    { 
    // 

    }while(NextFile); 

Close 
+0

appréciant votre réponse – Nefzen