gpt4 book ai didi

c++ - 如何在CLI11中检查选项是否为标志?

转载 作者:行者123 更新时间:2023-12-02 10:35:42 25 4
gpt4 key购买 nike

我正在使用CLI11库(link)来解析我的程序的命令行参数。

现在,我想将有关程序选项的信息打印到stdout。
似乎通过App::add_flag(...)添加的标志也作为内部选项存储,但是我需要在输出中区分它们。

如何确定标志是哪个选项?

这是一个简化的示例:

std::string file, bool myflag;
CLI::App *command = app.add_subcommand("start", "Start the program");

command->add_option("file", file, "This is a file option")->required();
command->add_flag("--myflag", myflag);

print_description(command);

...
std::string print_description(CLI::App* command) {
for (const auto &option : command->get_options()) {
result << R"(<option name=")" << option->get_name() << R"(" description=")" << option->get_description()
<< R"(" type=")";
if (/*option is a flag*/) {
result << "flag";
} else {
result << "option";
}
result << R"("/>)";
}
return result.str();
}

最佳答案

根据此问题:https://github.com/CLIUtils/CLI11/issues/439,函数Option::get_expected_min将始终为标志返回0。
因此可以像这样检查它:

if (option->get_expected_min() == 0) {
result << "flag";
} else {
result << "option";
}

关于c++ - 如何在CLI11中检查选项是否为标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60464521/

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