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
}
これはちょっともったいない気がします。より良い解決策はありますか?