在启动时为程序添加参数

时间:2008-12-25 05:41:24

标签: c++ parameters

我目前正在尝试制作一个执行不同职责的小型应用程序。现在我有一个控制台应用程序弹出并询问我想做什么,但有时我宁愿用MyApp.exe -printdocuments或类似的东西启动它。

是否有任何教程可以向我展示一个简单的例子?

5 个答案:

答案 0 :(得分:8)

在C ++中,您的main()函数可以包含argcargv个参数,这些参数包含在命令行上传递的参数。 argc是参数计数(包括可执行文件名本身),argv是指向以空字符结尾的长度为argc的字符串的指针数组。

例如,该程序打印其参数:

#include <stdio.h>

int main(int argc, char *argv[])
{
    for (int i = 0; i < argc; i++) {
        printf("argv[%d]: %s\n", i, argv[i]);
    }
    return 0;
}

任何C或C ++教程都可能有更多相关信息。

答案 1 :(得分:5)

您可以使用boost :: program_options执行此操作,如果您不想使用boost库,则必须自己解析主函数参数。

答案 2 :(得分:2)

getopt是一个posix函数(存在windows的实现),可以帮助你解析你的参数:

#include <unistd.h> // getopt

// call with my_tool [-n] [-t <value>]
int main(int argc, char *argv[])
{
    int opt;
    int nsecs;
    bool n_given = false, t_given = false;
    // a colon says the preceding option takes an argument
    while ((opt = ::getopt(argc, argv, "nt:")) != -1) {
        switch (opt) {
        case 'n':
            n_given = true;
            break;
        case 't':
            nsecs = boost::lexical_cast<int>(optarg);
            t_given = true;
            break;
        default: /* '?' */
            std::cerr << "Usage: "
                      << argv[0] << " [-t <value>] [-n]\n";
            return 1;
        }
    }
    return 0;
}

答案 3 :(得分:1)

你最好使用一个库。这里有一些链接可能会让你开始使用c ++的命令行参数。

  1. gperf

答案 4 :(得分:0)

您的入口点方法,即在C ++中,您的主要方法需要看起来像

int main ( int argc, char *argv[] );

你可以阅读这个article并完成你想要做的事情