使用 boost :: program_options ,如果参数不属于-
,--
或/
选项(选项本身及其可能值) ),我可以单独捕获这些参数的列表吗?
例如,我想写一个ls
程序。我希望我能有类似的实现:
ls -l --color=always <file_dir_1> <file_dir_2> ... <file_dir_n>
我可以捕捉<file_dir_1>
... <file_dir_n>
并专门处理它们。
答案 0 :(得分:3)
这些被称为“位置选项”。 Boost.Program Options通过按名称转发到现有选项来处理这些:
po::positional_options_description p;
p.add("input-file", -1); // forward positional options to "input-file" option
po::variables_map vm;
po::store(po::command_line_parser(ac, av). // replace po::parse_command_line(...)
options(desc).positional(p).run(), vm);
po::notify(vm);
您可能希望将“input-file”作为std::vector<std::string>
类型的现有选项。