Boost.Program_options обеспечивает возможность передать несколько маркеров через аргументы командной строки следующим образом:Boost.Program_options фиксированное количество жетонов
std::vector<int> nums;
po::options_description desc("Allowed options");
desc.add_options()
("help", "Produce help message.")
("nums", po::value< std::vector<int> >(&nums)->multitoken(), "Numbers.")
;
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
Однако то, что является предпочтительным способом принимать только фиксированное количество аргументов? Единственное решение, которое я мог придумать, - это присвоить вручную значения:
int nums[2];
po::options_description desc("Allowed options");
desc.add_options()
("help", "Produce help message.")
("nums", "Numbers.")
;
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
if (vm.count("nums")) {
// Assign nums
}
Это немного странно. Есть ли лучшее решение?
Я видел 'min_tokens' и' max_tokens', но я не знал, как они предназначены для использования. Спасибо, что указали класс 'typed_value'. Похоже, это путь, хотя это не так просто, как я надеялся. – kloffy