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 :

fichier de configuration: program_options


Sujet :

Boost C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut fichier de configuration: program_options
    Salut à tous,

    j'aimerais utiliser boost::program_options pour lire un fichier de conf. qui doit être de la forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    [Device]
    id=1
    name=Scanner
    ...
     
    [Device]
    id=2
    name=Scale
    ...
    program_options utilise une map, donc ce fichier n'est pas considéré comme valide à cause des doublons (il faudrait une multi_map).

    Y a-t-il un moyen de passer outre?

    Merci pour votre aide...

  2. #2
    Membre expérimenté Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par défaut
    hello,
    A mon avis, si plusieurs bloc ont me meme nom, il doit y avoir un probleme de conception dans ton fichier d'options. Pour boost::option je sais pas trop mais tu peux essayer de reorganiser ton fichier, genre
    [device1]
    .
    .

    [device2]
    .
    etc

    ou alors utilise utilise un autre format comme le xml

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    J'ai déjà pensé utiliser xml. Mais comme mon fichier de conf. est petit, c'est un peu overkill donc xml sera ma solution de secours
    Si j'utilise Device1, Device2 comme tu le proposes, et si je veux utiliser la fonction add_options, je suis alors obligé de changer mon code à chaque fois que j'ajoute un device:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    po::options_description desc("Configuration");
    desc.add_options()
        ("Device1", "first device")
        ...
        ("Device2", "second device")
        ...
    ;

  4. #4
    Membre expérimenté Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par défaut
    Tu peux peut etre automatiser un peu ca, avec un compteur que tu incremente avant chaque appel de add_option, tu le transforme en string et le concataine avec "Device".

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    Citation Envoyé par vikki Voir le message
    Tu peux peut etre automatiser un peu ca, avec un compteur que tu incremente avant chaque appel de add_option, tu le transforme en string et le concataine avec "Device".
    je ne peux pas faire comme ca, car cela voudrait dire que je connais déjà le nombre de Device (c'est justement le problème). Je dois bien donner une limite au compteur...

  6. #6
    Membre expérimenté Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par défaut
    Je dois bien donner une limite au compteur...
    Pas besoin il me semble. Tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    void addOption( po::options_description & desc , const std::string  & description)
    {
             static long count = 0;
             std::string name = std::string("Device") + to_string(count);
             desc.add_options()
             (name.c_str(),description.c_str())
             .
             .
             .
    }
    Un truc comme ca devrait marcher

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    Je pense que ca revient au même... Ta fonction addOption doit être appelée un certain nombre de fois et comme options_description est utilisée avant d'analyser le fichier de conf. , je ne peux pas savoir combien j'ai de "Device" à ce moment là, donc combien de fois je dois faire appel à addOption(...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    variables_map vm;
    options_description desc;
    desc.add_options()
        ("Device1.name", "name 1")
        ("Device1.id", "id 1")
        ("Device2.name", "name 2")
        ("Device2.id", "id 2");
    store(parse_config_file("example.cfg", desc), vm);
    notify(vm);
    On a besoin de connaitre exactement le nom des paramétres avant même d'analyser le fichier "example.cfg"...

    Désolé si j'exprime mal mon problème

  8. #8
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Personnellement j'utiliserais plutôt Boost.PropertyTree.

Discussions similaires

  1. [Débutant] Fichier de configuration
    Par Xavinou dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 26/09/2005, 23h02
  2. Réponses: 4
    Dernier message: 09/09/2005, 12h59
  3. [Log4j] fichier de configuration ou XML ?
    Par nabilblk dans le forum Logging
    Réponses: 2
    Dernier message: 02/09/2005, 16h42
  4. [langage] Lire un fichier de configuration
    Par bobinoo dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2004, 15h53
  5. Les fichiers de configuration de comptes avec Samba
    Par tomnie dans le forum Réseau
    Réponses: 4
    Dernier message: 18/03/2004, 08h30

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