Добавление параметров для программы при запуске - PullRequest
2 голосов
/ 25 декабря 2008

Я сейчас пытаюсь сделать небольшое приложение, которое выполняет разные обязанности. Прямо сейчас у меня появляется консольное приложение и спрашивает, что я хочу сделать, но иногда я бы предпочел просто запустить его с чем-то вроде MyApp.exe -printdocuments или чем-то подобным.

Существуют ли учебники, которые могут показать мне простой пример этого?

Ответы [ 5 ]

8 голосов
/ 25 декабря 2008

В C ++ ваша функция main() может иметь параметры argc и argv, которые содержат аргументы, передаваемые в командной строке. 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 ++, вероятно, будет больше информации об этом.

5 голосов
/ 25 декабря 2008

Для этого вы можете использовать boost :: program_options. Если вы не хотите использовать библиотеку boost, вы должны самостоятельно проанализировать аргументы основной функции.

2 голосов
/ 25 декабря 2008

getopt - это функция posix (существуют реализации для окон), которая может помочь вам разобрать ваши аргументы:

#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;
}
1 голос
/ 25 декабря 2008

Вы бы хорошо использовать библиотеку для этого. Вот несколько ссылок, которые могут помочь вам начать работу с аргументами командной строки с помощью c ++.

  1. Gperf
0 голосов
/ 25 декабря 2008

ваш метод точки входа, то есть в C ++ ваш основной метод должен выглядеть как

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

Вы можете прочитать эту статью и выполнить то, что вы пытаетесь сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...