Я использую boost::program_options
, чтобы предоставить интерфейс синтаксического анализа командной строки для моего приложения. Я хотел бы настроить его для анализа параметров,Как обрабатывать незапрашиваемые параметры в 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);
Я хотел бы настроить его так, чтобы каждый маркер после последнего переключателя возвращается в виде вектора. Я попытался использовать collect_unrecognized
, как пример, приведенный в документации Boost, но я столкнулся с некоторыми проблемами, потому что я также использую позиционные аргументы для входного файла.
В основном я хотел бы сделать это вот так. Если у меня есть:
./program -i "inputfile.abc" argument1 argument2 argument3
Я хотел бы, чтобы хранить inputfile.abc
в значении input-file
и возвращают vector<string>
из argument1
, argument2
и argument3
в качестве нежелательных аргументов.
Я бы, однако, также хотел бы быть в состоянии иметь позиционный аргумент, так что
./program "inputfile.abc" argument1 argument2 argument3
даст мне тот же результат.
Прошу прощения, если это уже было задано и спасибо вам за помощь.