Używam boost::program_options
do dostarczenia interfejsu do parsowania wiersza poleceń do mojej aplikacji. Chciałabym skonfigurować go do analizowania opcje,Jak radzić sobie z niezamawianymi parametrami w boost :: program_opcje
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);
chciałbym skonfigurować go tak, że każdy znak po ostatnim przełącznika jest zwracany w postaci wektorowej. Próbowałem przy użyciu collect_unrecognized
, jak w przykładzie podanym w dokumentacji Boost, ale wystąpiły pewne problemy, ponieważ jestem również przy użyciu argumentów pozycyjnych dla pliku wejściowego.
Zasadniczo chciałbym to zrobić tak. Jeśli mam:
./program -i "inputfile.abc" argument1 argument2 argument3
chciałbym go przechowywać inputfile.abc
wartości input-file
i zwracają vector<string>
od argument1
, argument2
i argument3
jako niechcianych argumentów.
Chciałbym jednak również, aby móc mieć pozycyjną argumentu, tak że
./program "inputfile.abc" argument1 argument2 argument3
mi da ten sam wynik.
Przykro mi, jeśli zostało to już zadane i dziękuję za pomoc.