Tengo una aplicación que usa Boost.Program_options para almacenar y administrar sus opciones de configuración. Actualmente, nos alejamos de los archivos de configuración y usamos la configuración cargada en la base de datos. Escribí una API que lee las opciones de configuración de la base de datos por nombre de host y nombre de instancia. (¡genial!) Sin embargo, hasta donde puedo ver, no hay forma de insertar manualmente estas opciones en el impulso Program_options. Alguien ha usado esto antes, alguna idea? Los documentos de boost parecen indicar que la única forma de obtener material en ese mapa es mediante la función de almacenamiento, que puede leer desde la línea de comando o el archivo de configuración (no es lo que quiero). Básicamente, busca una forma de insertar manualmente los valores de lectura de DB en el mapa.¿Cómo insertar opciones manualmente en boost.Program_options?
Respuesta
Mi respuesta llega un poco tarde, pero pasó algún tiempo tratando de hacer algo similar y se encontró una solución molestamente obvio (en caso que cualquier otra persona está buscando para esto) ...
Recordando que boost::program_options::variables_map
deriva de std::map<std::string, boost::program_options::variable_value>
, que puede hacer el proceso perfectamente legal mapa STL incluyendo una inserción ...
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-
Parece que program_options hereda de std :: map para mí. Lo veo derivado de: abstract_variables_map. No he revisado si todavía se trata de un estándar de reingeniería de mapas. – Alex
¡Excelente solución! – russoue
@Alex, hereda de [ambos] (http://www.boost.org/doc/libs/1_55_0/boost/program_options/variables_map.hpp). – russoue
¿Has mirado las funciones extra_parser
o allow_unregistered
de Boost::Program_Options
? Dependiendo de cómo funciona exactamente su programa, uno o ambos deberían ser capaces de soportar lo que desee.
- 1. ¿Cómo puedo insertar mi identidad manualmente?
- 2. Usando Boost.Program_options en el programa modular
- 3. ¿Cómo puedo insertar dinámicamente nuevas opciones en dijit.form.Select
- 4. ¿Cómo puedo invocar el diálogo para configurar las opciones de la impresora manualmente?
- 5. ¿Debo insertar manualmente la información de tamaño de datos en una transferencia TCP?
- 6. Insertar manualmente en una tabla por instrucción SQL, pero la clave está autoincrementada
- 7. ¿Por qué no funciona mi script, pero puedo INSERTAR manualmente en mysql?
- 8. ¿Cómo llamar un evento manualmente en C#?
- 9. ¿Cómo invoco manualmente una Acción en Swing?
- 10. ¿Cómo configuro manualmente un DataSource en Java?
- 11. ¿Cómo copio manualmente ensamblajes en el GAC?
- 12. Cómo detener manualmente en BroadcastReceiver androide
- 13. ¿Cómo construir manualmente un AST?
- 14. ggplot2: cómo ajustar manualmente scale_area
- 15. ¿Cómo invocar manualmente un evento?
- 16. ¿Cómo crear un TypeTag manualmente?
- 17. ¿Cómo reiniciar Visual Studio manualmente?
- 18. Cómo cerrar una jgrowl manualmente
- 19. Cómo iniciar IIS Express manualmente
- 20. QTextEdit. ¿Cómo seleccionar texto manualmente?
- 21. Cómo desplazar un panel manualmente?
- 22. Cómo generar manualmente números aleatorios
- 23. ¿Cómo tener una opción que habilite otras opciones en Opciones de programas Boost sin usar variables?
- 24. MVC DropDownListFor - ¿Debo volver a llenar manualmente las opciones después de que la validación falla?
- 25. Instalando Java manualmente en Windows?
- 26. Dibujar dendograma en python manualmente
- 27. ¿Cómo obtengo opciones interdependientes?
- 28. Cómo insertar en std :: map?
- 29. ¿Cómo insertar CookieCollection en CookieContainer?
- 30. ¿Cómo insertar emoticones en LaTeX?
he encontrado ninguna buena manera de hacer este corto de formatear un char ** como si se trata de una parámetro de línea de comandos. ¡Si alguien encuentra algo, házmelo saber! – Alex