Io uso boost::program_options
per fornire un'interfaccia di analisi della riga di comando alla mia applicazione. Vorrei configurarlo per analizzare le opzioni,Come gestire i parametri non richiesti in boost :: program_options
using namespace boost::program_options;
options_description desc("Allowed options");
desc.add_options()
("help,h", "produce help message")
("version,v", "print the version number")
("include-path,I", value< vector<string> >(), "include path")
("input-file,i", value<string>(), "input file");
positional_options_description p;
p.add("input-file", 1);
variables_map vm;
parsed_options parsed = command_line_parser(ac, av).
options(desc).positional(p).run();
store(parsed, vm);
notify(vm);
Vorrei configurarlo in modo che ogni gettone dopo l'ultimo interruttore viene restituito in una forma di vettore. Ho provato a utilizzare collect_unrecognized
come nell'esempio fornito nella documentazione Boost, ma ho incontrato alcuni problemi perché sto anche usando argomenti posizionali per il file di input.
Fondamentalmente mi piacerebbe farlo in questo modo. Se ho:
./program -i "inputfile.abc" argument1 argument2 argument3
vorrei che per memorizzare inputfile.abc
nel valore input-file
e restituire un vector<string>
di argument1
, argument2
e argument3
argomenti non richiesti.
Tuttavia, vorrei anche essere in grado di avere un argomento posizionale, in modo che
./program "inputfile.abc" argument1 argument2 argument3
mi darebbe lo stesso risultato.
Mi dispiace se questo è già stato chiesto e grazie per l'aiuto.