gpt4 book ai didi

c++ - Boost 程序选项 - 解析命令行时崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:23 24 4
gpt4 key购买 nike

我有以下 boost::program_options 程序。

boost::program_options::options_description opts("Allowed options");
opts.add_options()
("help", "produce help message"),
("mingw", boost::program_options::value<std::string>(), "Set the install path for MinGW"),
("triple", boost::program_options::value<std::string>(), "Set the target triple"),
("output", boost::program_options::value<std::string>(), "Set the output file"),
("input", boost::program_options::value<std::vector<std::string>>(), "Set an input file."),
("include", boost::program_options::value<std::vector<std::string>>(), "Set an include path.")
;

boost::program_options::positional_options_description posopts;
posopts.add("input", -1);

boost::program_options::variables_map vm;
try {
boost::program_options::store(boost::program_options::command_line_parser(argc, argv).options(opts).positional(posopts).run(), vm);
} catch(std::exception& e) {
std::cout << e.what();
std::cin.get();
}
boost::program_options::notify(vm);

if (vm.find("help") != vm.end()) {
std::cout << opts << "\n";
std::cin.get();
return 1;
}
// Actual program logic

但是,当我在命令行指定--mingw="stuff"时,发现被拒绝了。在发出 --help 命令后,似乎只有列表中选项的第一个选项实际上是用 opts 注册的 - 尽管以这种方式链接它是什么教程推荐。

这个简单的示例程序出了什么问题?它基本上直接来自教程。

最佳答案

查看教程,我没有看到选项之间有逗号。即:

desc.add_options()
("help", "produce help message") // no comma here!
("compression", po::value<int>(), "set compression level")
;

尝试删除每个选项末尾的逗号。

关于c++ - Boost 程序选项 - 解析命令行时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17515232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com