Использование 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-файлы - обратитесь к разделу, посвященному ускорению сериализации.