mensaje change cambiar c++ boost boost-program-options

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)