Использование boost::program_options

В моей программе у меня есть список пар - имя и размер.

Я хочу построить этот список из интерфейса командной строки, используя boost::program_options,

Это должно выглядеть примерно так:

myProg --value ("Джон",10) --value("Стив",14) --value("Мардж",28)

Мне также нужно, чтобы это было в порядке - Стив будет после Джона и до Мардж в списке. Это возможно с boost::program_options?

Этот синтаксис CLI - просто идея получить список. Если у вас есть лучший, скажите.

2 ответа

Решение

Вы просто определяете свой вариант

("value", value<vector<YourPairType>>()->composing(), "description")

и соответствующий

istream& operator >> (istream& in, YourPairType& pr) { /* ... */ }

который читает один YourPairType от in в вашем ("John",10) формат. Разобранные параметры будут сохранены в порядке их появления в командной строке.

Вы можете добиться большей гибкости, если будете использовать собственные валидаторы вместо operator >>,

Файл с каждой строкой, имеющей одну пару значений, может быть одним вариантом. Файл может быть простым текстовым файлом ascii или вы также можете использовать xml-файлы - обратитесь к разделу, посвященному ускорению сериализации.

Другие вопросы по тегам