如何在C++中使用getopt严格执行选项检查?

Rav*_*jar 5 c++ getopt command-line-interface getopt-long

我使用getopt来解析用C++编写的CLI的输入.我有long和short选项,我的struct long_options []元素看起来像这样:

{"verbose", no_argument, NULL, "v"}
Run Code Online (Sandbox Code Playgroud)

一个观察是 - 在命令行上,即使我通过了

# mycommand --verb
Run Code Online (Sandbox Code Playgroud)

它仍然接受并路由到处理详细行为的函数.有没有办法让getopt做一个严格的选项检查?它不应该接受--verb as --verbose对吗?

use*_*342 2

根据手册[1] [2]和来源[3],无法关闭匹配的缩写长选项。

您的选择是接受这种行为(这种行为已经存在了几十年,不太可能让用户感到惊讶),或者寻找另一个允许关闭长选项缩写的选项解析器库。