提升program_options解析选项和参数一起
boost program_options parse option and argument together
#include <boost/program_options.hpp>
#include <iostream>
#include <string>
#include <stdexcept>
void basic_approach(int argc, char const *argv[])
{
try
{
options_description desc{"Options"};
desc.add_options()
("help,h", "Help screen")
("pi,p", value<float>()->default_value(3.14f), "Pi")
("bool,b", value<bool>()->default_value(false), "bool");
variables_map vm;
store(parse_command_line(argc, argv, desc), vm);
notify(vm);
if (vm.count("help")){
std::cout << desc << 'n';
}
if (vm.count("pi")){
std::cout << "Pi: " << vm["pi"].as<float>() << 'n';
}
if(vm.count("bool")){
std::cout<<"bool: "<<vm["bool"].as<bool>() <<"n";
}
}
catch (const error &ex)
{
std::cerr << ex.what() << 'n';
}
}
int main(int argc, char const *argv[])
{
basic_approach(argc, argv);
}
当我进入"test.exe --pi 334"
时,程序运行完美。
但它cannot parse "test.exe --pi334"
但抛出异常
"unrecognised option '--pi334'"
boost是否可以解析像"--pi334"这样的选项?多谢
#include <boost/program_options.hpp>
#include <iostream>
#include <string>
#include <stdexcept>
void basic_approach(int argc, char const *argv[])
{
try
{
options_description desc{"Options"};
desc.add_options()
("help,h", "Help screen")
("pi,p", value<float>()->default_value(3.14f), "Pi")
("bool,b", value<bool>()->default_value(false), "bool");
command_line_parser parser(argc, argv);
parser.options(desc).style(
command_line_style::default_style |
command_line_style::allow_sticky);
parsed_options parsed_options = parser.run();
variables_map vm;
store(parsed_options, vm);
notify(vm);
if (vm.count("help")){
std::cout << desc << 'n';
}
if (vm.count("pi")){
std::cout << "Pi: " << vm["pi"].as<float>() << 'n';
}
if(vm.count("bool")){
std::cout<<"bool: "<<vm["bool"].as<bool>() <<"n";
}
}
catch (const error &ex)
{
std::cerr << ex.what() << 'n';
}
}
int main(int argc, char const *argv[])
{
basic_approach(argc, argv);
}
感谢您的帮助,我只需要并command_line_style::allow_sticky即可使其工作
相关文章:
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 两个函数模板候选项.将一个参数作为引用后,选择不太专业的模板
- 提升::P设置选项无法使所有参数都处于位置状态
- 是否有 g++ 或 clang++ 调试选项来指导可变参数模板化
- C++ Catch 是否有类似 NUnit 的测试用例的东西,具有多个参数/输入选项
- C++编译时/运行时选项和参数,如何处理?
- 如何在 c/c++ 中为参数添加选项?(视觉工作室平台2019)
- 用于在 Visual Studio 中为整个项目或解决方案定义带有参数的预处理器宏的选项
- 什么是clang 选项,以便在GDB中我可以使用std :: cout作为函数参数
- 提升程序选项:参数被多次检测到
- 将参数从升压程序选项导出到doxygen
- 如何将命令行参数与c++中的选项一起传递给函数
- 是否有任何选项可以推迟对可变参数模板中函数调用的评估
- 提升program_options解析选项和参数一起
- 具有接受参数选项的默认构造函数
- 在C++中,如何仅将长选项与必需参数一起使用
- C++的任何命令行解析库是否允许具有N个参数的选项
- 具有数字偏移量的命令行参数选项
- 按位置查找未标记的模板选项/参数/参数
- 如何将值传递到qsub代码的boost选项参数中