当前位置:  开发笔记 > 编程语言 > 正文

在C++中从命令行处理参数的最有效方法

如何解决《在C++中从命令行处理参数的最有效方法》经验,为你挑选了4个好方法。

有效地在C++中进行命令行参数处理的建议:

注意:仅限Windows

 1:     #include 
 2:     int main(int argc, char **argv)

而不是,例如:

 if ( argc != 3 )  {
      ....
 }

问候



1> j_random_hac..:

如果您只想自己处理命令行选项,最简单的方法是:

vector args(argv + 1, argv + argc);

在你的顶部main().这会将所有命令行参数复制到std::strings 的向量中.然后,您可以==轻松地比较字符串,而不是无休止的strcmp()调用.例如:

int main(int argc, char **argv) {
    vector args(argv + 1, argv + argc);
    string infname, outfname;

    // Loop over command-line args
    // (Actually I usually use an ordinary integer loop variable and compare
    // args[i] instead of *i -- don't tell anyone! ;)
    for (vector::iterator i = args.begin(); i != args.end(); ++i) {
        if (*i == "-h" || *i == "--help") {
            cout << "Syntax: foomatic -i  -o " << endl;
            return 0;
        } else if (*i == "-i") {
            infname = *++i;
        } else if (*i == "-o") {
            outfname = *++i;
        }
    }
}

[编辑:我意识到我正在将argv[0]程序的名称复制到args- 修复.]



2> Ferruccio..:

使用C++,答案通常在Boost ...

Boost.Program选项



3> Aaron Maenpa..:

我建议使用一个库.这是经典和令人尊敬的getopt,我相信其他人.



4> brofield..:

有许多好的图书馆可供选择.

Boost Program Options是一个相当重要的解决方案,因为将它添加到您的项目需要您构建提升,并且语法有点令人困惑(在我看来).但是,它可以执行几乎所有操作,包括使命令行选项覆盖配置文件中设置的选项.

SimpleOpt是一个相当全面但简单的命令行处理器.它是一个单独的文件并且具有简单的结构,但只处理将命令行解析为选项,您必须执行所有类型和范围检查.它适用于Windows和Unix,并且还附带了适用于Windows的glob版本.

getopt在Windows上可用.它与Unix机器上的相同,但它通常是GPL库.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有