在 boost::program_options 解析我的命令行参数后如何获得非标志和非选项标记

Ros*_*ers 5 c++ boost boost-program-options

在 python 中,我可以构建我的optparse实例,这样它会自动将选项和非选项/标志过滤到两个不同的桶中:

(options, args) = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

使用 boost::program_options,如何检索剩余的非选项和非标志令牌的令牌列表?

例如,如果我的程序有标志

--foo 
--bar BAR
Run Code Online (Sandbox Code Playgroud)

然后我传入命令行:

--foo hey --bar BAR you
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到一个仅由“嘿”和“你”组成的列表

D.S*_*ley 2

IIRC,您必须使用positional_options_description隐藏选项的组合。这个想法是(1)添加一个普通选项并给它一个名称,可能类似于--positional=ARG,(2)不要在帮助描述中包含该选项,(3)配置 command_line_parser为将所有位置参数视为已--positional指定,并且(4) 使用 检索位置参数vm["positional"].as< std::vector<std::string> >()

源代码树中可能有一个示例,但我现在这台机器上没有它。