FindFirstFile sans windows.h [Résolu]

Signaler
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
-
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
-
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

Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
109
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
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut
Ou regarde http://en.wikipedia.org/wiki/Dirent.h

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
2
Bonjour,

Comment utilise-t'on boost::filesystem ?

Merci d'avance et à bientôt...
Nico
Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
109
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
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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.
Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
109
@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
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
2
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
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
2
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
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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.
Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
109
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
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
2
Merci à tous les deux,
je vais essayer d'utiliser une astuce style fopen...
mais je passerai surement à boost

Encore merci et à bientôt !