Comment puis-je obtenir une liste de fichiers dans un répertoire en C++?
Comment obtenez-vous une liste de fichiers dans un répertoire de manière que chacun puisse être traitée?
Vous devez vous connecter pour publier un commentaire.
Comment obtenez-vous une liste de fichiers dans un répertoire de manière que chacun puisse être traitée?
Vous devez vous connecter pour publier un commentaire.
Mais
boost::filesystem
peut le faire: http://www.boost.org/doc/libs/1_37_0/libs/filesystem/example/simple_ls.cppVoici ce que j'utilise:
std::string
. À l'aide destd::string
, vous devez mettrestd::
en face de lastring
type de déclaration et d'utilisationopendir(directory.c_str())
.Voici un exemple en C sous Linux. C'est si, vous êtes sous Linux et n'est pas contre l'idée de faire ce petit peu dans la norme ANSI C.
closedir(dpdf)
par la suitedpdf
etepdf
stand for?Vous devez utiliser des appels de système d'exploitation (par exemple l'API Win32) ou un wrapper autour d'eux. J'ai tendance à utiliser Coup de pouce.Système de fichiers comme il est de qualité supérieure de l'interface par rapport au désordre qui est de l'API Win32 (ainsi que la croix-plate-forme).
Si vous êtes à la recherche pour l'utilisation de l'API Win32, Microsoft a une liste de fonctions et exemples sur msdn.
Si vous êtes dans Windows & à l'aide de MSVC, la bibliothèque MSDN a exemple de code qui fait cela.
Et voici le code à partir de ce lien:
C++11/Linux version:
Résoudre cela nécessitera une plate-forme de solution spécifique. Regardez pour les fonctions opendir() sous unix/linux ou FindFirstFile() sur Windows. Ou, il y a beaucoup de bibliothèques qui gère la plate-forme spécifique de la partie pour vous.
J'ai juste demandé un semblable question et voici ma solution basée sur la réponse reçue (à l'aide de
boost::filesystem
bibliothèque):Sortie est identique:
Après la combinaison d'un lot de fragments de code, j'ai enfin trouvé une réutilisables solution pour Windows, qui utilise la Bibliothèque ATL, qui est fourni avec Visual Studio.
Pour accéder à la méthode, il suffit d'appeler:
Ou de vous le faire et ensuite de lire les test.txt:
Le "b" signifie simplement les noms de fichiers sont rendus, pas plus d'info.
/b
et où allons-nous donner à l'annuaire?Configuration des attributs à regarder pour les répertoires.
Vous pouvez utiliser le code suivant pour obtenir tous les fichiers dans un répertoire.Une simple modification dans la Andreas Bonini réponse à supprimer l'occurance de "." et ".."