IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

[Boost.FileSystem::Path] Fonctionnement des name checkers


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut [Boost.FileSystem::Path] Fonctionnement des name checkers
    Bonjour,

    Je m'intéresse particulièrement ces temps-ci à cette merveilleuse (vraiment) bibliothèque que constitue Boost. Etant en pleine conception d'un lecteur audio, j'aimerais utiliser la classe 'path' de Boost.FileSystem pour vérifier qu'un certain chemin -absolu-, de type std::string, identifie un fichier musical (WMA, WAV, MP3, OGG...). Pour cela, j'ai cru comprendre que cette classe permettait d'utiliser une fonction perso comme name checker (retournant 'true' si le chemin est correct), et j'ai donc pensé en utiliser une pour cela.

    Voilà le topo : comment fonctionne la vérification ? Est-elle effectuée à la construction de l'objet (si c'est le cas, l'objet est-il vide si le test échoue ?) ? Durant l'utilisation d'itérateurs ?

    Merci d'avance.

    P.S: Un code serait le bienvenu, si c'est possible

    [H.S] Pendant que j'y suis, connaîtriez-vous une manière -en utilisant Boost.Random- de générer des entiers naturels pseudo-aléatoires (une idée du générateur approprié etc.) ? Merci.

  2. #2
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Pour tester un chemin, utilise la fonction exists:
    Un exemple rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    std::string chaine = "C:/test/hop.txt";
    if ( boost::filesystem::exists(chaine) )
    {
    	DVCAMIR_NFS_LUT_DIR = chaine;
    	std::cout << "Lecteur Dcamir trouvé";
    	return true;
    }

  3. #3
    Membre éclairé Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut
    Es-tu sûr du code fourni ? Je croyais que boost::filesystem::exists() testait simplement l'existance d'un fichier ?

    Ce que j'aimerais, c'est tester si le fichier correspond au type attendu... en utilisant path::name_checker, mais comment, telle est la question que je pose.

    Merci de ta réponse.

  4. #4
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    La fonction exists permet de tester l'existence d'un fichier ou bien d'un dossier. Je l'ai déjà utilisé et ça fonctionne parfaitement bien !

    D'après ce que j'ai compris, ça répondrait à ton problème. Mais si ce n'est pas le cas, précise ton problème un peu plus !

  5. #5
    Membre éclairé Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut
    J'ai dû mal me faire comprendre :

    Je code actuellement un lecteur audio. Dans celui-ci, on peut sélectionner dans une boîte de dialogue les musiques à écouter, seulement, c'est possible de sélectionner avec -par inadvertance ou non- d'autres fichiers, images par exemple, que je ne peux bien évidemment pas lire.

    Le travail des name_checker (d'après ce que j'en ai compris) me permettrait -en fournissant une fonction de ce type retournant true si le fichier présente une extension compatible- de distinguer les fichiers valides ou non, mais je ne sais pas comment marche la distinction, ce que j'aimerais savoir ici.

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Pour random -> http://miles.developpez.com/tutoriels/cpp/boost/random/
    Pour file system, l'interface a un peu évolué, mais tu peux regarder ici : http://miles.developpez.com/tutoriel...st/filesystem/ pour commencer.
    C'est très facile à faire en réalité : tu prends ton fichier, tu cherches son extension et tu regardes si elle vaut l'une de tes extensions à toi.

Discussions similaires

  1. boost::filesystem liste des hard drive
    Par dessibull dans le forum Boost
    Réponses: 0
    Dernier message: 14/12/2010, 14h40
  2. Réponses: 5
    Dernier message: 02/09/2009, 12h34
  3. boost::filesystem::path ne veut pas s'initialiser !
    Par tlemcenvisit dans le forum Boost
    Réponses: 1
    Dernier message: 09/11/2008, 04h44
  4. Réponses: 18
    Dernier message: 28/08/2006, 23h07
  5. [langage] fonctionnement des Processus
    Par GMI3 dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2003, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo