我搜索了高低,找不到这个。打印帮助的CLI11方法是什么。我希望能够在用户输入错误信息时向他们显示帮助。
另外,当没有给出选项时,CLI11 会抛出异常吗?如果没有,你怎么知道有多少选择?
我搜索了高低,找不到这个。打印帮助的CLI11方法是什么。我希望能够在用户输入错误信息时向他们显示帮助。
另外,当没有给出选项时,CLI11 会抛出异常吗?如果没有,你怎么知道有多少选择?
我将回答我自己的问题,以便将来对其他人有所帮助。
我在网上遇到了一个暗示解决方案的代码片段并引导我找到答案。总之,没有CLI11的方法可以直接打印出帮助文本。但是,有两种方法可以以编程方式打印帮助文本。
尝试/捕获块
这是 CLI11 本机方法。设置完所有选项定义后,定义一个 try/catch 块,如下所示:
CLIx::App app( argc,
argv );
.
.
.
try
{
app.parse( argc,
argv);
}
catch( const CLI::CallForHelp &e )
{
exit( app.exit( e ) );
}
“exit(app.exit(e));”行 调用应用程序解析器方法“exit”,该方法打印帮助文本并返回错误代码以退出程序。然后,当您想要打印帮助文本时,只需抛出:
throw CLI::CallForHelp();
这个异常在任何文档中都没有描述,只有通过爬取 CLI11 的源代码才能发现。
有点直接,有点笨拙
前面的方法假设您想在打印帮助文本后退出程序。在我的情况下,这是行不通的,因为作为我程序的一部分,我让用户在交互式提示符下输入带有选项的命令。相反,您可以使用假异常直接调用 CLI11 的退出方法:
app.exit( CLI::CallForHelp() );
有点傻,但完成了工作。
同样,这在任何地方都没有记录,只有通过 CLI11 代码才能发现。
最后,尽管有这个小疣,我强烈推荐CLI11。它易于使用且功能强大。