是否可以使用boost :: program_options来捕获带破折号的参数?

时间:2014-09-11 08:18:47

标签: c++ boost

使用 boost :: program_options ,如果参数不属于---/选项(选项本身及其可能值) ),我可以单独捕获这些参数的列表吗?

例如,我想写一个ls程序。我希望我能有类似的实现:

ls -l --color=always <file_dir_1> <file_dir_2> ... <file_dir_n>

我可以捕捉<file_dir_1> ... <file_dir_n>并专门处理它们。

1 个答案:

答案 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>类型的现有选项。

相关问题