Bonjour,
Tout est dans l'intitulé. Je voudrais savoir si il existe une bibliothèque C/C++ permettant de lister le contenu d'un répertoire de manière portable.
Bonjour,
Tout est dans l'intitulé. Je voudrais savoir si il existe une bibliothèque C/C++ permettant de lister le contenu d'un répertoire de manière portable.
Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
Un peu de programmation réseau ?
Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.
En C++ c'est facile
C'est une commande system elle permet d’écrire le contenu du répertoire dans le fichier qu'on veut.....mais sa c'est la commande sur Windows
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 system(dir > nomfichier)
Du coup, ce n'est pas portable du tout.
boost::filesystem est probablement la meilleure réponse générale.
Pareil pour boost::filesystem
(d'ailleurs, filesystem n'est-il pas prévu d'être incorporer dans le standard C++ ?)
Sinon, en trois coup de cuillère à pot j'ai pondu ceci:
Je ne suis pas sûr que les macros commençant par _t... soient standards telles quelles, mais le code est compréhensible et les fonctions C sous-jacentes assez évidentes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 void InsideDir(std::_tstring const & path) { std::_tstring vFileName(path); _tfinddata_t vFileData; intptr_t vHandle; vFileName.append(_T("*")); vHandle = _tfindfirst(vFileName.c_str(), &vFileData); int vRet = 0; while (vHandle > 0 && vRet == 0) { if (!(vFileData.attrib & _A_SUBDIR)) { std::_tstring filename(vFileData.name); ... your code ... } else if (vFileData.name[0] != _T('.')) { vFileName = path; vFileName += vFileData.name; vFileName += _T('\\'); InsideDir(vFileName); } vRet = _tfindnext(vHandle, &vFileData); } }![]()
La librairie Boost::filesystem n'était pas portable (de nombreux compilateurs ne proposant pas Boost), mais vient d'être promue au standard C++17: http://en.cppreference.com/w/cpp/filesystem
Du coup, maintenant elle est ... toujours pas portable! (de nombreux compilateurs n'étant pas à jour pour C++17). Mais bon, ça va dans le bon sens et devrait arriver rapidement chez la majorité des développeurs C++.
@ac_wingless, vous confondez standard et portable.![]()
Partager