FindFirstFile sans windows.h

Résolu
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 - 3 mars 2011 à 19:10
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 - 4 mars 2011 à 15:21
Bonjour,

Je souhaiterais développer une application compatible avec plusieurs plateformes (Windows, Linux, MacOS) et j'aurais besoin d'une fonction pour lister les fichiers d'un répertoire comme FindFirstFile de windows.h mais compatible avec toutes les plateformes.
J'ai prévu d'utiliser GTKmm pour l'interface graphique, y-aurait-t'il un moyen de lister les fichiers d'un répertoire sans windows.h (en c++ ou dans gtkmm) ?

Merci d'avance et à bientôt...
Nico

11 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
4 mars 2011 à 00:08
boost::filesystem :)

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
3
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
4 mars 2011 à 08:40
Salut
Ou regarde http://en.wikipedia.org/wiki/Dirent.h

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
3
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
4 mars 2011 à 01:31
Bonjour,

Comment utilise-t'on boost::filesystem ?

Merci d'avance et à bientôt...
Nico
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
4 mars 2011 à 09:58
Faire du C++ sans boost, ça devient rare. Boost est en partie inclut dans le prochain standard du C++, c'est pour dire l'importance de cette bibliothèque.
Tuto ici:
http://www.boost.org/doc/libs/1_46_0/libs/filesystem/v3/doc/tutorial.html

@Pistol_Pete: D'après le lien que tu as donné: Microsoft Visual C++ does not include dirent.h, ce n'est pas standard, tout comme boost. Mais ça reste une très bonne idée :)

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
4 mars 2011 à 10:19
Ce n'est effectivement pas standard, néanmoins, cela évite d'inclure une usine à gaz pour lister les fichiers d'un répertoire...
A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
4 mars 2011 à 10:27
@Pistol_Pete: S'il n'a pas vocation à utiliser boost, je suis tout à fait d'accord avec toi. Ta solution est une excellente idée. Ce que je mettais en avant, c'est que faire du C++ sans boost, se fait rare, et qu'on possède donc généralement déjà la bibliothèque.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
4 mars 2011 à 12:18
Bonjour,

Je viens d'essayer ce qui m'a été proposé par Pistol_Pete et ça fonctionne bien, pour le boost, je regarderais ça un peu plus tard mais ça m'intéresse bien.
Une autre question me vient à l'esprit, est-il (ou plutôt comment) possible de savoir s'il s'agit d'un dossier, ou d'un fichier ou de rien ?

Merci d'avance et à bientôt...
Nico
0
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
4 mars 2011 à 12:22
Bonjour,

Pour savoir si le chemin mène à un dossier ou un fichier, je pense avoir trouvé quelque chose avec boost du genre is_regular_file ou is_directory (à approffondir) mais voulais savoir si c'était possible en c++ standard ?

Merci d'avance et à bientôt...
Nico
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
4 mars 2011 à 14:11
Sous windows c'est GetFileAttributes() mais je ne connais pas l'équivalent portable.

As tu essayé de faire un fopen sur un répertoire? Il doit surement faire une erreur non?
A+
____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
4 mars 2011 à 14:14
Sous Unix:
http://drocourt.info/cours/Unix/C-Programmation_Systeme/prog_sys5.xhtml

Mais, je ne connais pas de fonction portable pour le faire (à part boost ou vérifier la réussite de l'ouverture d'un fichier).

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
4 mars 2011 à 15:21
Merci à tous les deux,
je vais essayer d'utiliser une astuce style fopen...
mais je passerai surement à boost

Encore merci et à bientôt !
0
Rejoignez-nous