Frage

Ich habe eine Anwendung, die Boost.Program_options zu speichern und verwalten ihre Konfigurationsoptionen verwendet. Wir bewegen sich zur Zeit von Konfigurationsdateien entfernt und stattdessen Datenbank geladen Konfiguration. Ich habe eine API geschrieben, die Konfigurationsoptionen aus der Datenbank von Hostnamen und Instanznamen liest. (Cool!) Aber soweit ich es keine Möglichkeit sehen kann, ist manuell diese Optionen in die Boost-Program_options einzufügen. Hat jemand dies vor, irgendwelche Ideen verwendet? Die docs von boost scheinen den einzigen Weg, um anzuzeigen, Zeug zu bekommen, dass Karte durch die Speicherfunktion ist, das entweder liest von der Befehlszeile oder Config-Datei (nicht das, was ich will). Grundsätzlich Suche nach einer Möglichkeit, manuell die DB einfügen lesen Werte in der Karte.

War es hilfreich?

Lösung

Meine Antwort kommt ein wenig zu spät, aber ich habe etwas ähnliches und gefunden zu tun, um eine annoyingly offensichtliche Lösung einige Zeit versucht (Incase jemand anderes für diese suchen) ...

, dass boost::program_options::variables_map unter Hinweis ergibt sich aus std::map<std::string, boost::program_options::variable_value>, können Sie völlig legal STL Karte Verarbeitung tun mit einem Einsatz ...

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-

Andere Tipps

Haben Sie sich den extra_parser oder allow_unregistered Funktionen von Boost::Program_Options? Je nach genau, wie Ihr Programm arbeitet, einer von ihnen oder beide sollten in der Lage sein, zu unterstützen, was Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top