c++ - 如何强制 boost program_options 严格检查选项?
问题描述
这是我的最小示例,基本上是从 boost 网站复制的:
#include <boost/program_options.hpp>
#include <iostream>
namespace po = boost::program_options;
int main(int argc, char **argv) {
po::options_description desc("Test options");
desc.add_options()
("help", "Print help")
;
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
if (vm.count("help")) {
std::cout << desc << std::endl;
}
}
当我运行时:
./main --help
它按预期打印帮助。当我运行时:
./main --foo
正如预期的那样,它会引发unknown_option
错误。但是当我运行时:
./main foobar
它忽略了参数并且没有引发错误。我没有指定位置参数,所以我希望 boost 也会在这里引发错误。
为什么 boost 会这样表现(我希望有一些我还没有看到的合乎逻辑的原因)?
我能做些什么来强制提升以严格检查提供的选项并在其他任何事情上引发错误?
解决方案
推荐阅读
- java - 使用 FileWriter 的控制台输出
- spring-boot - Post JSON 不正确时返回错误消息
- javascript - 过滤来自两个不同 API 的项目
- salesforce-marketing-cloud - AMPScript - 配置/设置
- python - 聚类后如何计算每个聚类的均值
- c# - 模拟按键时必须为 keycode 和 keychar 指定什么(vb.net 或 c# 与 dotnetbrowser)
- javascript - 在延迟传单外部后运行内联脚本
- vba - 如何将 Word 单元格拆分为由回车标记的行?
- javascript - 在 JAVASCRIPT 中过滤数据以显示特定种族 - 从 JSON URL 获取
- c++ - 大小为 N 的数组,其中 N 未初始化,但没有错误并且运行良好