boost :: program_options: как игнорировать неизвестные параметры?

в boost::program_options библиотека, я не могу понять, как разрешить пользователю передавать параметр, который не был добавлен через add_options(),
Я бы хотел, чтобы его просто игнорировали, а не прерывали программу.

4

Решение

Я столкнулся с этой же проблемой сегодня вечером. Ответ @ TAS поставил меня на правильный путь, но все равно потребовалось 20 минут бормотания пальца, чтобы выяснить точный синтаксис для моего конкретного варианта использования.

Чтобы игнорировать неизвестные параметры, вместо того, чтобы писать это:

po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);

Я написал это:

po::variables_map vm;
po::store(po::command_line_parser(argc, argv).options(desc).allow_unregistered().run(), vm);
po::notify(vm);

Обратите внимание, что только средний линия отличается.

В двух словах, используйте commandline_parser() скорее, чем parse_commandline()с некоторыми «висячими битами» (т.е. .options(desc).allow_unregistered().run()) прикреплен после вызова.

3

Другие решения

Из документации boost :: program_options Как: разрешить неизвестные параметры

parsed_options parsed =
command_line_parser(argc, argv).options(desc).allow_unregistered().run();
7

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector