2009-12-07 5 views
3

Est-il possible d'ouvrir des fichiers à partir d'un répertoire donné en C/C++ en utilisant des caractères génériques?Ouvrir les fichiers du répertoire courant en utilisant un caractère générique C++

Au sens, si je veux ouvrir des fichiers qui se terminent par « à (node_id) » dans un répertoire courant donné dans mon programme.

Exemple: Je dois ouvrir les fichiers dont les noms de fichiers se terminent par « à 4 ». Sortie désirée: Il doit ouvrir tous les fichiers dans le répertoire courant avec les noms de fichiers qui se terminent par "to4". Si des fichiers de 0 à 4, de 1 à 4, de 2 à 4 & de 3 à 4 existent dans le répertoire en cours, ils doivent être ouverts.

S'il est impossible en C/C++, est-il un autre langage de programmation qui permet cela?

+0

Question connexe: http://stackoverflow.com/questions/1257721/can-i-use-a-mask-to-iterate-files-in-a-directory-with-boost. –

Répondre

4

Pas en standard C++; Vous devrez utiliser des appels de fonction spécifiques au système d'exploitation ou une bibliothèque de systèmes de fichiers telle que Boost.Filesystem.

Dans les deux cas, vous pouvez obtenir une liste de fichiers dans un répertoire donné et itérer sur la liste et ouvrir uniquement celles qui correspondent à vos paramètres.

4

Vous pouvez le faire avec C et C++. Sous Windows, vous pouvez utiliser [FindFirstFile et FindNextFile] (http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx)

Votre plate-forme peut déjà le faire pour vous Si vous utilisez Unix, supposons que vous exécutez la commande suivante:..

$ ./myprog *to4 

La coquille d'abord le caractère générique et se développe puis exécute myprog avec les arguments développés, ce qui équivaut à

$ ./myprog from0to4 from1to4 from2to4 from3to4 

dans votre répertoire exemple.

Vous avez demandé à d'autres langues, donc le code ci-dessous comment vous pouvez le faire avec Perl:

#! /usr/bin/perl 

foreach my $file (<*to4>) { 
    open my $fh, "<", $file or die "$0: open $file: $!\n"; 

    while (<$fh>) { 
    print "$file: $_"; 
    } 
} 

Par exemple, tout d'abord créer les fichiers, puis exécutez un programme qui les ouvre:

$ for i in 0 1 2 3; do 
> echo file $i > from${i}to4 
> done 

$ ./opento4s 
from0to4: file 0 
from1to4: file 1 
from2to4: file 2 
from3to4: file 3 
Questions connexes