Разбор INI-подобных файлов конфигурации - PullRequest
1 голос
/ 12 сентября 2010

Я пишу INI-подобный файл конфигурации и хочу узнать, как лучше всего разобрать его в C / C ++. Я пишу это на POSIX, поэтому я буду использовать # вместо;. Что не имеет значения. Я просто хочу знать, есть ли какое-то учебное пособие, статья о разборе чего-либо или что-то подобное.

Ответы [ 6 ]

3 голосов
/ 12 сентября 2010

Существует множество учебных пособий и статей по синтаксическому анализу, но то, с чем вы имеете дело, настолько тривиально, что большинство из них, вероятно, будет излишним.

Учитывая, как часто это делалось раньше, я быначните с , глядя на некоторый существующий код, который уже реализует почти то, что вы хотите.

2 голосов
/ 12 сентября 2010

Уже существует множество библиотек с открытым исходным кодом, которые вы, вероятно, можете использовать практически без изменений, например, libini .

1 голос
/ 11 ноября 2010

Попробуйте Конфигуратор.Это простая в использовании и гибкая библиотека C ++ для анализа файлов конфигурации (от простейшего INI до сложных файлов с произвольной вложенностью и семантической проверкой).Только заголовок и кроссплатформенность.Использует библиотеки Boost C ++.

См .: http://opensource.dshevchenko.biz/configurator

1 голос
/ 13 сентября 2010

Как часто в базовых материалах C ++, у boost есть библиотека, которая может читать ini-файлы.На самом деле есть две библиотеки, в зависимости от того, чего вы хотите достичь:

0 голосов
/ 26 декабря 2013

Если Boost для вас избыточен, попробуйте этот BSD-код размером 6 Кбайт.

"inih (INI здесь не изобретен) - это простой анализатор файлов .INI, написанный на C.страниц кода, и он был разработан, чтобы быть маленьким и простым, так что это хорошо для встроенных систем. "

http://code.google.com/p/inih/

Существует также класс C ++, если вы предпочитаете объекты, иподдерживает оба ";"и "#" комментарии.

0 голосов
/ 13 сентября 2010

В зависимости от того, какая сложность вам на самом деле нужна, вы можете просто использовать fgets () в цикле и анализировать каждую строку вручную (например, с помощью strstr (), strchr (), strcmp () и т. Д.).Нет смысла перетаскивать библиотеку синтаксического анализа, если вам просто нужно получить несколько значений.

...