【问题标题】:How to check for command line parameters on C++ in UNIX?如何在 UNIX 中检查 C++ 的命令行参数?
【发布时间】:2012-02-17 09:46:48
【问题描述】:

如何在 UNIX 中对 C++ 上的命令行参数进行错误检查?例如,如果您不输入任何参数,您将如何打印出错误消息而不仅仅是获得分段错误?

【问题讨论】:

标签: c++ unix command-line parameters


【解决方案1】:
if (argc<2)
{
    fprintf(stderr, "This program requires more parameters\n");
    return -1;
}

【讨论】:

    【解决方案2】:

    如果argc不大于1,则用户没有提供命令行参数:

    #include <stdio.h>
    
    int main (int argc, char *argv[])
    {
        if (argc < 2)
        {
            printf("The command had no arguments.\n");
        }
        return 0;
    }
    

    【讨论】:

    • argv[0] 并不总是执行程序的名称。如果你使用execl,它可以是任何东西,包括NULL。另见stackoverflow.com/a/275317/79455
    • Re "第一个参数 (argv[0]) 始终是执行程序的名称": 错了。按照惯例,argv[0] 是程序的名称,而不是强制要求。如果您使用exec 系列函数调用某个程序,您可以随意制作argv[0]。有一些强有力的安全理由不将名称(尤其是路径)传递为 argv[0]
    【解决方案3】:

    使用getopt

    【讨论】:

      【解决方案4】:

      强烈推荐使用 boost program_option 库进行命令行解析。

      【讨论】:

        猜你喜欢
        • 2017-03-10
        • 1970-01-01
        • 2021-02-14
        • 2012-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-14
        • 1970-01-01
        相关资源
        最近更新 更多