使用Argo命令行解析器:当选项位于现有选项后面时,不返回未知选项

时间:2019-07-18 10:38:37

标签: c++ c++11 command-line-arguments argo

使用这个非常漂亮的命令行解析器Argo(仅Header C ++库),我遇到了一个小问题。 参见:https://github.com/phforest/Argo

当未找到选项时,Argo返回:“错误:未知选项”,但当参数位于已知参数后面时,则不会。

编译以下代码:(inc是argo标头的位置) c ++ test.cpp -I inc --std = c ++ 11

#include <iostream>
int main(int argc, char **argv)
{
        argo::Configuration pcnfg;
        std::vector<std::string>    input_texts;
        pcnfg.program.name = { "wow", "EyeOnText WoWoolConsole" };
        pcnfg.program.version = { 1, 1, 1 };

        argo::Arguments args(pcnfg);
        args.add(argo::handler::Option("input-text", "i", input_texts).help("Input text to process."));

        const auto result = args.parse(argc, argv);
        switch (result.status)
        {
            case argo::ReturnCode::Error: std::cerr << "Error: " << result.message << std::endl; return 1;
            case argo::ReturnCode::SuccessAndAbort: return 0;
            default: break;
        }

        for ( auto const & input : input_texts )
        {
            std::cout << "- " << input << std::endl;
        }
    return 0;
}

运行: ./a.out --other -i“测试” 错误:未知选项“ --other” 没关系

运行: ./a.out -i“测试” --other -测试 --其他

-其他不应该在输入列表中。

1 个答案:

答案 0 :(得分:0)

(免责声明:我是图书馆的开发人员)

我认为这在较新的版本中已解决。至少,使用提供的代码,可以获得预期的输出(两次“未知选项”错误)。如果仍然无法解决,我们可以使用https://gitlab.com/dgrine/Argo/issues

的错误跟踪器进行处理