gpt4 book ai didi

c++ - boost::program_options - 它是否对命令行选项进行精确的字符串匹配?

转载 作者:可可西里 更新时间:2023-11-01 09:26:24 25 4
gpt4 key购买 nike

boost::program_options 的 options_description 匹配完成的方式似乎有问题。

int main(int argc, char* argv[])
{
boost::program_options::options_description desc("CmdLine utility");
desc.add_options()
("hel", "hel message")
("help", "produce help message")
("helps","helps message")
;
boost::program_options::variables_map vm;
boost::program_options::store(boost::program_options::parse_command_line(argc, argv,desc), vm);
boost::program_options::notify(vm);

if(vm.count("help")) {
std::cout << desc << std::endl;
}
if(vm.count("helps")) {
std::cout << "helps..." << std::endl;
}
if(vm.count("hel")) {
std::cout << "hel..." << std::endl;
}
return 0;
}

输出-

C:\code>cmd.exe --helps
helps...
C:\code>cmd.exe --help
helps...
C:\code>cmd.exe --hel
helps...

如果我更改使用 add_options() 调用添加选项的顺序,输出会发生变化。此外,program_options 似乎没有进行完整的命令字符串匹配,因此即使您输入选项的子字符串,它也会将其视为有效选项而不进行完整的字符串比较。如果这是一个 boost::program_options 特性,有没有办法强制它进行精确的字符串匹配而不是子字符串匹配? (我使用的是 Boost 版本 1.42)

最佳答案

默认情况下,program_option 启用了 allow_guessing 样式位,因此子字符串匹配就足够了。您观察到的行为是一个错误,其中一个选项与命令行的前缀匹配,即使存在完全匹配的不同选项也是如此。它已在 1.45 中修复。

关于c++ - boost::program_options - 它是否对命令行选项进行精确的字符串匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4197454/

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