Boost.Program_options offre une possibilité de passer plusieurs jetons via les arguments de ligne de commande comme suit:Boost.Program_options nombre fixe de jetons
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);
Cependant, ce qui est le meilleur moyen d'accepter un nombre fixe d'arguments? La seule solution que je pourrais venir est d'assigner manuellement des valeurs:
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
}
Cela semble un peu maladroit. Y a-t-il une meilleure solution?
J'ai vu 'min_tokens' et' max_tokens', mais je n'étais pas certain de la façon dont ils devaient être utilisés. Merci d'avoir signalé la classe 'typed_value'. Il semble que ce soit la voie à suivre, même si ce n'est pas aussi facile que je l'aurais espéré. – kloffy