我想知道如何在boost中传递程序选项而不提供像program.exe var1
这样的参数名称而不是program.exe --arg1 var1
。但是我知道如何在没有boost lib的情况下处理这个问题而只获得argv[1]
。
有两种情况:一种情况,当我必须使用argNames指定所有args 时,当我只有一个参数 - fileName
时现在我知道如何处理第一个但问题是第二个问题 - 如何通过boost lib处理它们?或者简单 - 是否可以这样做?
答案 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函数。对于简单的情况,后者是一个方便的包装器,但现在我们需要传递更多信息。