Mam aplikacji, która używa Boost.Program_options do przechowywania i zarządzania jej opcje konfiguracyjne. W tej chwili odchodzimy od plików konfiguracyjnych i zamiast tego używamy konfiguracji ładowanej przez bazę danych. Napisałem interfejs API odczytujący opcje konfiguracyjne z bazy danych według nazwy hosta i nazwy instancji. (fajnie!) Jednak, o ile widzę, nie ma możliwości ręcznego wstawienia tych opcji do opcji boost Program_options. Czy ktoś kiedyś to użył, jakieś pomysły? Dokumenty z doładowania wydają się wskazywać, że jedynym sposobem na uzyskanie rzeczy na tej mapie jest funkcja sklepu, która albo czyta z wiersza poleceń, albo z pliku konfiguracyjnego (nie tego, czego chcę). Zasadniczo szuka sposobu ręcznego wstawienia wartości odczytu DB na mapę.Jak ręcznie wstawiać opcje do opcji boost.Program_opcji?
Odpowiedz
Moja odpowiedź przychodzi zbyt późno, ale spędziłem trochę czasu, próbując zrobić coś podobnego i znalazł irytująco oczywiste rozwiązanie (nie rozczarować ktoś szuka tego) ...
boost::program_options::variables_map
przypominając, że wywodzi się z std::map<std::string, boost::program_options::variable_value>
można zrobić całkowicie legalne przetwarzanie STL mapę w tym wkładki ...
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-
Wygląda na to, że program_options nie dziedziczy ze std :: map do mnie. Widzę, że pochodzi z: abstract_variables_map. Nie sprawdziłem, czy jest to ponownie opracowana opcja std :: map. – Alex
Doskonałe rozwiązanie! – russoue
@Alex, dziedziczy po [obu] (http://www.boost.org/doc/libs/1_55_0/boost/program_options/variables_map.hpp). – russoue
Czy obejrzałeś funkcje extra_parser
lub allow_unregistered
z Boost::Program_Options
? W zależności od tego, jak działa twój program, jeden lub obaj powinni być w stanie wesprzeć to, co chcesz.
- 1. Jak dynamicznie wstawiać nowe opcje do dijit.form.Select
- 2. Opcje zależne opcji programu doładowania
- 3. Opcje wielu opcji wyboru jenkins
- 4. Jak wstawiać elementy do wektora?
- 5. JS: Jak dynamicznie wstawiać tekst do SPANU?
- 6. Jak wstawiać zmienne javascript do adresu URL?
- 7. W jaki sposób można ręcznie wstawiać dane trasowania trasy do kontrolera?
- 8. Jak dodać opcje do listy
- 9. Status uchwytu (np. 503) w odpowiedzi opcji Axios OPCJE
- 10. Eclipse: Jak zainstalować wtyczkę ręcznie?
- 11. W zależności od opcji, które opcje są możliwe?
- 12. Android: jak ręcznie dodać plik do apk?
- 13. DEMONTOWANE OPCJE Opcje DAEMON_OPTS Błędy
- 14. ContentObserver do aktualizacji kontaktów ręcznie
- 15. graphviz dot: jak wstawiać strzałki od węzła do środka strzałki
- 16. Jak wstawiać rekordy do SQL z wyszukującymi wartościami?
- 17. Jak mogę dynamicznie wstawiać nowy szablon do DOM z Ember?
- 18. Jak dynamicznie wstawiać dane do jonowy-slide-box Angularjs Ionic
- 19. Jak ręcznie utworzyć TypeTag?
- 20. Jak dynamicznie wstawiać kolumny w programie Excel?
- 21. Dodaj opcje do Select2 po inicjalizacji
- 22. Jak wstawiać komentarze Rdoc w RubyMine
- 23. Jak programowo wstawiać fragmenty w relatywnej wersji
- 24. Jak przekazać opcje "-J" do javac poprzez Maven?
- 25. Jak wstawiać wartości w sklepie w extjs
- 26. Jak wstawiać dynamicznie obrazy w Crystal Reports
- 27. Jak ręcznie upuścić DataGridViewComboBoxColumn?
- 28. Jak przepisać kod na opcje?
- 29. Jak dodać ikonę obrazu do Bootstrap Wybierz opcje
- 30. przekazać opcje build_ext do instalacji pip
znalazłem żadnego dobrego sposobu robi ten krótki formatowania char ** a jeśli jest to parametr linii poleceń. Jeśli ktoś znajdzie coś, daj mi znać! – Alex