c++ - change - cambiar mensaje de required html5
boost:: program_options: la característica "*" no documentada descubierta, ahora necesita un validador personalizado que escriba en un mapa (1)
Debe repetir todos los argumentos que identifiquen cuál tiene el prefijo correcto o escribir un analizador personalizado. Las instrucciones para ambas opciones se encuentran en la respuesta correcta del siguiente enlace:
boost :: program_options: parámetros con un token fijo y variable?
La opción de iteración puede parecer más fácil de entender (implementar y leer) pero el analizador personalizado también parece bueno (aunque nunca lo he usado).
Recientemente descubrí una característica no documentada de boost::program_options
, es decir, que acepta "*" como un comodín especial que permite la declaración de un grupo de opciones con el mismo prefijo, como este:
configOptions.add_options()
("item_*", value<int>(), "items");
Esta declaración funcionó como se esperaba y reconoció item_1
, item_3
, etc., mientras rechazaba las opciones desconocidas. Bueno, ahora la pregunta es, ¿cómo puedo escribir una función de validación personalizada que rellenará un mapa con la clave de opciones y su valor, así:
map<string, int> itemsMap;
options_description items("items options");
items.add_options()
("item_*",value<map<string, int>>(&itemsMap)->multitoken(), "items")
;
Mi pregunta es: ¿cómo obtengo la clave de la opción validada desde la función validate ()?
template <typename T> void validate(boost::any& v, const std::vector<std::string>& values, map<string, T> *, int)