Je veux effectuer une itération sur tous les fichiers dans un répertoire correspondant à quelque chose comme "somefiles*.txt". Ne boost::filesystem ont quelque chose de construit pour faire cela, ou dois-je besoin d'une regex ou quelque chose à l'encontre de chacune des feuilles()?
Réponses
Trop de publicités?EDIT: Comme indiqué dans les commentaires, le code ci-dessous est valable pour les versions d' boost::filesystem
avant la v3. Pour la v3, reportez-vous aux suggestions dans les commentaires.
boost::filesystem
n'ont pas de génériques, vous avez pour filtrer les fichiers vous-même.
C'est un exemple de code de l'extraction du contenu d'un répertoire avec un boost::filesystem
s' directory_iterator
et le filtrage par boost::regex
:
const std::string target_path( "/my/directory/" );
const boost::regex my_filter( "somefiles.*\.txt" );
std::vector< std::string > all_matching_files;
boost::filesystem::directory_iterator end_itr; // Default ctor yields past-the-end
for( boost::filesystem::directory_iterator i( target_path ); i != end_itr; ++i )
{
// Skip if not a file
if( !boost::filesystem::is_regular_file( i->status() ) ) continue;
boost::smatch what;
// Skip if no match
if( !boost::regex_match( i->leaf(), what, my_filter ) ) continue;
// File matches, store it
all_matching_files.push_back( i->leaf() );
}
(Si vous êtes à la recherche d'un prêt-à-utiliser la classe avec builtin répertoire de filtrage, avoir un regard sur Qt QDir
.)
Comme mentionné à la fin de Julien-L's post - QDir
est exactement ce que vous voulez.
https://qt-project.org/doc/qt-5.0/qtcore/qdir.html#QDir-3