Question

J'ai une application qui utilise Boost.Program_options pour stocker et gérer ses options de configuration. Nous nous écartons actuellement des fichiers de configuration et utilisons plutôt la configuration chargée en base de données. J'ai écrit une API qui lit les options de configuration de la base de données par nom d'hôte et nom d'instance. (cool!) Cependant, autant que je sache, il n'y a aucun moyen d'insérer manuellement ces options dans le boost Program_options. Quelqu'un a-t-il déjà utilisé cela, des idées? La documentation de boost semble indiquer que le seul moyen d’obtenir des éléments dans cette carte est d’utiliser la fonction store, qui lit la ligne de commande ou le fichier de configuration (et non ce que je veux). En gros, on cherche un moyen d’insérer manuellement les valeurs de lecture de la base de données dans la carte.

Était-ce utile?

La solution

Ma réponse arrive un peu trop tard, mais j'ai passé du temps à essayer de faire quelque chose de similaire et j'ai trouvé une solution contrariante (si quelqu'un d'autre le cherche) ...

Rappelant que boost::program_options::variables_map dérive de std::map<std::string, boost::program_options::variable_value>, vous pouvez effectuer un traitement parfaitement légal des cartes STL, y compris un insert ...

namespace po = boost::program_options;
po::variables_map vm;
vm.insert(std::make_pair("MyNewEmptyOption", po::variable_value());
vm.insert(std::make_pair("MyNewIntOption", po::variable_value(32, false));
po::notify(vm);

-Edmond-

Autres conseils

Avez-vous consulté les extra_parser ou allow_unregistered fonctions de Boost::Program_Options? Selon le mode de fonctionnement de votre programme, l’un ou l’autre d’entre eux devrait être en mesure de répondre à vos besoins.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top