C ++ - вопрос с параметрами - PullRequest
4 голосов
/ 24 июля 2010

Я ищу какой-то простой и эффективный контейнер параметров, который бы действовал как представление файла in-memory-xml (или ini-file , как другой пример).

Я имею в виду, что в основном он может хранить разделы и наборы параметров для каждого раздела, иметь простые средства доступа, такие как GetValue("ParameterName") и простое приведение возвращаемых значений.

Было бы здорово, если бы он был сериализуем.

Я написал что-то подобное вчера, и, ну, это соответствует моим потребностям, но, возможно, есть что-то более удобное и гибкое?

Может быть, какая-то карта параметров в boost?

Спасибо

Ответы [ 4 ]

8 голосов
/ 24 июля 2010

Взгляните на boost :: program_options . Он делает то, что вам нужно, и даже больше: разбор INI-файлов, разбор переменных среды, разбор параметров командной строки и расширяемость.

4 голосов
/ 24 июля 2010

Рассматривали ли вы std :: map <> ?

2 голосов
/ 24 июля 2010

Не знаю, слишком ли это или нет, но класс Message в MUSCLE выполняет все перечисленные выше действия. Вы можете использовать его для сериализации данных любого типа (структурированных или нет) или использовать его в качестве контейнера в памяти для проанализированных конфигурационных файлов в стиле .ini через ParseFile () / UnparseFile () .

1 голос
/ 28 июля 2010

Вы можете использовать Boost.PropertyTree .

Он читает и пишет файлы XML и INI.

Хранит параметры в виде дерева, и вы можете использовать точечную запись для доступа к значениям:

std::string value = pt.get<std::string>("debug.filename");

Вы также можете вставить новые значения, используя:

pt.put("debug.filename", fileName);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...