6 c++ boost boost-program-options
我boost::program_options用来为我的应用程序提供命令行解析接口.我想配置它来解析选项,
using namespace boost::program_options;
options_description desc("Allowed options");
desc.add_options()
("help,h", "produce help message")
("version,v", "print the version number")
("include-path,I", value< vector<string> >(), "include path")
("input-file,i", value<string>(), "input file");
positional_options_description p;
p.add("input-file", 1);
variables_map vm;
parsed_options parsed = command_line_parser(ac, av).
options(desc).positional(p).run();
store(parsed, vm);
notify(vm);
Run Code Online (Sandbox Code Playgroud)
我想配置它,以便最后一次切换后的每个标记以向量的形式返回.我已尝试使用collect_unrecognizedBoost文档中给出的示例,但我遇到了一些问题,因为我也使用输入文件的位置参数.
基本上我想这样做.如果我有:
./program -i "inputfile.abc" argument1 argument2 argument3
Run Code Online (Sandbox Code Playgroud)
我想它来存储inputfile.abc的input-file值,并得出vector<string>的argument1,argument2并argument3为未经请求的参数.
然而,我也希望能够有一个位置论证,所以
./program "inputfile.abc" argument1 argument2 argument3
Run Code Online (Sandbox Code Playgroud)
会给我相同的结果.
我很抱歉,如果已经提出这个问题,谢谢你的帮助.
小智 5
我想出了可以解决问题的代码,但这是一个轻微的解决方法。也就是说,我放弃了位置子句,并采用了无法识别的参数中的第一个参数。它似乎工作正常,但它不是很灵活。
using namespace boost::program_options;
options_description desc("Allowed options");
desc.add_options()
("help,h", "produce help message")
("version,v", "print the version number")
("include-path,I", value< vector<string> >(), "include path")
("input-file,i", value<string>(), "input file")
;
variables_map vm;
vector<string> additionalParameters;
parsed_options parsed = command_line_parser(ac, av).
options(desc).allow_unregistered().run();
store(parsed, vm);
additionalParameters = collect_unrecognized(parsed.options,
include_positional);
notify(vm);
if (!vm.count("input-file"))
if (additionalParameters.empty())
{
cerr << "error: No input file specified\n";
return EXIT_FAILURE;
}
else
{
inputFileName = additionalParameters[0];
additionalParameters.erase(additionalParameters.begin());
}
else
inputFileName = vm["input-file"].as<string>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2228 次 |
| 最近记录: |