Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > вопрос по boost.program_option


Автор: andrew_121 25.2.2010, 11:06
всем хай!
код:
Код

int main() {
....
    int rpc_port                = config["rpcport"     ];
    int refresh_time            = config["refreshtime"];
    bool demonize                = false;
    bool show_help                = false;

    /** programm options */
    boost::program_options::options_description description("allowed options");
    description.add_options()
        ("help", boost::program_options::value<bool>(&show_help)->default_value(false), "produce help message")
        ("port", boost::program_options::value<int>(&rpc_port)->default_value(1234), "set RPC port")
        ("rtime", boost::program_options::value<int>(&refresh_time)->default_value(500), "refresh time in ms")
        ("demonize", boost::program_options::value<bool>(&demonize)->default_value(false), "demonize when start");

    std::cout<< "help = " << show_help << std::endl
            << "port = " << rpc_port << std::endl;

исходя из описания: http://www.boost.org/doc/libs/1_42_0/doc/html/program_options/tutorial.html#id1418609
Цитата

The "optimization" option shows two new features. First, we specify the address of the variable(&opt). After storing values, that variable will have the value of the option. Second, we specify a default value of 10, which will be used if no value is specified by the user

я так понял, что при указании определенного ключа, его значение сохранится в переменной?
но почему-то ничего в переменной не сохраняется.
или я что-то не правильно понял?

Автор: SenkraD 25.2.2010, 11:18
andrew_121, ты случайно эти строчки перед своис std::cout не забыл
Код
boost::program_options::variables_map vm;
boost::program_options::store(boost::program_options::parse_command_line(argc, argv, boost::program_options), vm);
boost::program_options::notify(vm);

Автор: andrew_121 25.2.2010, 11:25
Цитата(SenkraD @  25.2.2010,  11:18 Найти цитируемый пост)
andrew_121, ты случайно эти строчки перед своис std::cout не забыл

думаю что нет.
в прежнем варианте boost.program_options только так и можно было. но в версии 1.42 появилась возможность этого не делать(опять таки, если я правильно понял из описания)

Добавлено через 1 минуту и 18 секунд
ой, епс!
точно!
как-же boost.program_options узнает о переданных программе опциях.
 smile

Добавлено через 5 минут и 12 секунд
Цитата(SenkraD @  25.2.2010,  11:18 Найти цитируемый пост)
boost::program_options::store(boost::program_options::parse_command_line(argc, argv, boost::program_options), vm);

на счет этого я согласен.
но зачем:
Цитата(SenkraD @  25.2.2010,  11:18 Найти цитируемый пост)
boost::program_options::variables_map vm;

?
значения же должны сохраниться в переменных. наверное...

Автор: andrew_121 25.2.2010, 17:59
нифига не получилось.
использовал по старинке.
вопрос закрыт.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)