Les fichiers dans le répertoire en C++
Comment obtenir tous les fichiers dans un répertoire donné à l'aide de C++ sur windows?
Remarque:
J'ai trouvé des méthodes qui utilisent dirent.h
mais j'ai besoin d'un moyen standard...
Grâce
En fait, les fonctions de dirent.h ne sont plus la norme POSIX ().
Mais le fichier n'est pas inclus dans VC++ 2008
POSIX ne fait pas partie de la bibliothèque standard et il n'est pas bien supporté par les plus utilisés compilateur C/C++ (MSVC) de la plupart des système d'exploitation utilisé (Windows).
POSIX est un standard de Windows n'est pas. Mais à partir de vos autres posts ici, je ne vois pas beaucoup de point en faisant valoir le point.
C'est complètement hors de propos, si POSIX est plus standard de Windows ou pas. La question d'origine est clairement lié à Windows, et donc de parler de
Mais le fichier n'est pas inclus dans VC++ 2008
POSIX ne fait pas partie de la bibliothèque standard et il n'est pas bien supporté par les plus utilisés compilateur C/C++ (MSVC) de la plupart des système d'exploitation utilisé (Windows).
POSIX est un standard de Windows n'est pas. Mais à partir de vos autres posts ici, je ne vois pas beaucoup de point en faisant valoir le point.
C'est complètement hors de propos, si POSIX est plus standard de Windows ou pas. La question d'origine est clairement lié à Windows, et donc de parler de
dirent.h
n'a absolument aucun sens et n'est pas utile.OriginalL'auteur qwe | 2010-07-04
Vous devez vous connecter pour publier un commentaire.
Utilisation FindFirstFile et les fonctions associées. Exemple:
maintenant, plus de sens, mais si vous dites "8-bits de l'API" il ne sera guère être interprétée comme un "non-UNICODE API". À mon avis, il ne mérite pas un -1, car il n'y a pas de réel besoin d'ajouter de la complexité à un échantillon ajout de TEXTE() macro et _txxx fonctions.
C'est un exemple pour lister les fichiers, pas de sortie de texte, et
printf
sert bien ici. Je pourrait même être utiliséMessageBox
au lieu deprintf
, mais bon, ce n'est pas le point.Oui, ce n'est pas à propos de la sortie du texte, mais il y a déjà tellement de nombreux exemples qui utilisent inutilement obsolète de l'API qu'une autre n'est pas nécessaire. @Lorenzo: Vous n'avez pas à ajouter
TEXT
macros si vous ne voulez pas, vous pouvez utiliser l'échelle de cordes (L"…"
) à la place. Mais vous procédez de l'une de ces sous Windows, sinon, votre programme est cassé.Vous êtes confus
UNICODE
(sélectionne API Win32, commeFindFirstFileA/W
) et_UNICODE
(sélectionne MS CRT API, commeprintf
/wprintf
)OriginalL'auteur casablanca
Ce sujet de la bibliothèque boost: le système de fichiers.
Boost.org
Ce n'est guère le "standard" de Windows...
Cela dépend de la définition du mot "standard". Si vous n'acceptez normes ISO, alors il n'y a pas de manière standard.
FindFirstFile
est accepté interface OS pour la liste des entrées du répertoire, et coup de pouce.Le système de fichier est juste un wrapper autour de cette interface sur Windows. Les deux sont de facto des normes.La norme sur Windows, c'est de rester aussi loin de l'API Win32 possible. Si Boost offre une saine alternative, c'est le réflexe de beaucoup de développeurs C++ serait sauter à elle.
mais l'utilisateur a demandé à la norme WIndows.
OriginalL'auteur domachine
Vous devez utiliser le
FindFirstFile
fonction (documenté ici). C'est la norme (et de préférence) de façon dans Windows, cependant il n'est pas portable. L'en-têtedirent.h
vous avez trouvé contient la définition de la la norme POSIX fonctions.Pour le code complet regardez cet exemple: Liste les Fichiers dans un Répertoire
OriginalL'auteur Wizard79
La norme acceptée pour le C++ est décrite dans
N1975ISO/IEC TS 18822:2015, dernier projet en date est N4100. Votre compilateur peut-être pas encore, dans ce cas Coup de pouce.Système de fichiers fournit essentiellement les mêmes.OriginalL'auteur MSalters