Ich habe eine Anwendung, die Boost.Program_options verwendet, um ihre Konfigurationsoptionen zu speichern und zu verwalten. Wir entfernen uns gerade von den Konfigurationsdateien und verwenden stattdessen die Konfiguration mit Datenbank. Ich habe eine API geschrieben, die Konfigurationsoptionen aus der Datenbank nach Hostnamen und Instanznamen liest. (cool!) Soweit ich sehen kann, gibt es keine Möglichkeit, diese Optionen manuell in den Boost Program_options einzufügen. Hat jemand das schon mal genutzt, irgendwelche Ideen? Die Docs von Boost zeigen an, dass die einzige Möglichkeit, Sachen in dieser Map zu bekommen, die Store-Funktion ist, die entweder von der Kommandozeile oder der Konfigurationsdatei liest (was ich nicht will). Suchen Sie nach einer Möglichkeit, die DB-Werte manuell in die Karte einzufügen.Wie fügen Sie manuell Optionen in boost.Program_options ein?
Antwort
Meine Antwort kommt ein wenig zu spät, aber ich habe etwas ähnliches und fand einige Zeit versucht, eine annoyingly offensichtliche Lösung zu tun (incase jemand anderes für diese Suche) ...
Hinweis darauf, dass boost::program_options::variables_map
von std::map<std::string, boost::program_options::variable_value>
ableitet Sie können mit einem Einsatz vollkommen legal STL Karte Verarbeitung tun ...
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-
Sieht nicht so aus, als ob program_options von std :: map zu mir erbt. Ich sehe es abgeleitet von: abstract_variables_map. Hab noch nicht ausgecheckt, ob das noch eine überarbeitete std :: map ist. – Alex
Ausgezeichnete Lösung! – russoue
@Alex, erbt von [beiden] (http://www.boost.org/doc/libs/1_55_0/boost/program_options/variables_map.hpp). – russoue
Haben Sie sich die extra_parser
oder allow_unregistered
Funktionen von Boost::Program_Options
angesehen? Abhängig davon, wie genau Ihr Programm arbeitet, sollten einer oder beide in der Lage sein, das zu unterstützen, was Sie wollen.
- 1. So fügen Sie einer Liste Optionen hinzu
- 2. Erstellen Sie einen Präfix-Befehl mit Boost.Program_options
- 3. So fügen Sie Autovervollständigungsvorlagen in monodevelop ein
- 4. Wie fügen Sie Zeilenumbrüche in mediawiki ein?
- 5. Wie fügen Sie in applescript ein?
- 6. Handhabung '-' mit boost.program_options
- 7. Wie ein jgrowl manuell
- 8. Wie implementiert man Unterbefehle mit Boost.Program_options?
- 9. Prolog - wie fügen Sie ein Element in eine Liste ein
- 10. Wie fügen Sie Pods in ein anderes Teilprojekt ein?
- 11. Wie fügen Sie UILabel (iOS Swift) ein?
- 12. Fügen Sie zusätzliche Optionen zu Django Form Select Widget
- 13. Wie fügen Sie ein Bild hinzu?
- 14. So fügen Sie Klartext ein?
- 15. fügen Sie ein anderes Layout
- 16. Fügen Sie einen Zeilenumbruch in Titel ein
- 17. Fügen Sie MAVEN_OPTS in die POM.xml ein
- 18. Fügen Sie org.json.JSONArray in jackson ein ObjektNode
- 19. Wie fügen Sie mehrere Zeilen zu einem manuell erstellten ADODB.Recordset in C# hinzu. NET
- 20. Wie zeichne ein Kreisdiagramm manuell in Android?
- 21. Laden Sie ein Modell manuell mit EmberData
- 22. Fügen Sie jquery in die Variable ein
- 23. Fügen Sie eine Ziffer in ein Doppel
- 24. So fügen Sie einen Seitenumbruch in openpyxl ein
- 25. So fügen Sie ein div in ein Dropdown-Feld ein
- 26. Wie durchqueren Sie AST manuell?
- 27. Wie fügen Sie MSI in benutzerdefinierte Windows-Installation ein?
- 28. Wie fügen Sie Marker in einen Silverlight LIVE-Videostream ein?
- 29. Wie fügen Sie dieselbe Zufallsvariable in mehrere Soapui-Testfallanforderungen ein?
- 30. Fügen Sie das "Minuszeichen" in diesen regulären Ausdruck ein, wie?
ich ein Zeichen der Formatierung keine gute Möglichkeit, diese kurz zu tun ** gefunden habe, als ob es sich um eine Kommandozeilenparameter. Wenn jemand etwas findet, lass es mich wissen! – Alex