如何在没有参数名称的情况下传递程序选项,其他所有选项都完全可用

时间:2015-10-29 21:21:22

标签: c++11 boost-program-options

我想知道如何在boost中传递程序选项而不提供像program.exe var1这样的参数名称而不是program.exe --arg1 var1。但是我知道如何在没有boost lib的情况下处理这个问题而只获得argv[1]

有两种情况:一种情况,当我必须使用argNames指定所有args 时,当我只有一个参数 - fileName时现在我知道如何处理第一个但问题是第二个问题 - 如何通过boost lib处理它们?或者简单 - 是否可以这样做?

1 个答案:

答案 0 :(得分:0)

tutorial就是这样一个例子:

  

"输入文件" option指定要处理的文件列表。这对于一个开始是可以的,但是,当然,写一些类似的东西:

compiler --input-file=a.cpp
     与

相比,

有点不标准

compiler a.cpp
     

我们马上解决这个问题。

     

如上所述,没有选项名称的命令行令牌被称为"位置选项"通过这个图书馆。他们也可以处理。在用户的一点帮助下,图书馆可以决定" a.cpp"真的和" - 输入文件= a.cpp"相同。这是我们需要的其他代码:

po::positional_options_description p;
p.add("input-file", -1);

po::variables_map vm;
po::store(po::command_line_parser(ac, av).
          options(desc).positional(p).run(), vm);
po::notify(vm);
     

前两行表示所有位置选项都应转换为"输入文件"选项。另请注意,我们使用command_line_parser类来解析命令行,而不是parse_command_line函数。对于简单的情况,后者是一个方便的包装器,但现在我们需要传递更多信息。