Простая обработка опций с использованием библиотеки Boost (C ++) - PullRequest
3 голосов
/ 14 января 2009

Например, используя следующий синтаксис:

 -I [file] -A 1 2 3

Вопрос:

Как проверить, был ли указан файл , и дополнительно, если были указаны три (целые) значения.

Я понимаю следующее:

po::options_descriptions desc("Allowed options");
desc.add_options()

Как использовать указанные аргументы, например:

    if (argv[3] == 1) {
        ...
    }

Привет

1 Ответ

4 голосов
/ 17 января 2009

Вы используете variables_map, чтобы проверить, были ли указаны опции. Если вы добавили параметр с именем "file", а ваш variables_map получил имя vm:

if(vm.count("myoption")) { ... } // Returns 0 if myoption not specified. 1 or more if it was.

После того как вы использовали add_options для добавления некоторых опций, вы можете получить к ним доступ, например, при условии, что вы настроили variables_map с именем vm:

vm["myoption"].as<int>() // Will return an int, assuming your option is an int
vm["myoption"].as<std::string>() // Will return an std::string, assuming your option is an int

В вашем случае вы хотите преобразовать одну из указанных опций в последовательность целых чисел. Вы можете сделать это так:

vm["myoption"].as< std::vector<int> >()

Который вернет вектор, содержащий 3 целых числа, которые вы можете индексировать и использовать точно так же, как и любой нормальный вектор. Чтобы увидеть, есть ли конкретно 3, просто используйте векторную функцию size().

Учебное пособие по этому вопросу находится здесь .

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