我一直在尝试使用boost::program_options验证我通过的选项。我的命令有几种模式,每种模式都有可以指定的关联参数。我正在尝试做的是确保通过模式传递这些关联的参数,即
unicorn --fly --magic-wings-threshold
其中
--fly
是模式,而--magic-wings-threshold
是关联的参数。我注意到的是--magic-wings-threshold
是否具有默认值,例如("magic-wings-threshold,w", po::value<double>(&wings_thresh)->default_value(0.8, "0.8"),
"Magic wings maximum power"
)
那我就不能使用
if (vm.count("magic-wings-threshold")( {
// do stuff
}
检测用户是否通过了该参数。
似乎总是在
vm.count()
中传递和检测默认值参数。有谁知道解决方法或替代方法? 最佳答案
使用 boost::program_options::variable_value::defaulted()
if (vm["magic-wings-threshold"].defaulted()) {
// assume defaulted value
} else {
// one was provided
}