Я начинаю работу над новым программным обеспечением, которое в конечном итоге потребует некоторого надежного и расширяемого файла ввода-вывода. Там много форматов. XML, JSON, INI и т.д. Однако всегда есть плюсы и минусы, поэтому я подумал, что попрошу внести некоторые предложения сообщества.
Вот некоторые грубые требования:
- Формат является "стандартным"... Я не хочу изобретать велосипед, если мне это не нужно. Он не должен быть формальным стандартом IEEE, но что-то, что вы могли бы сделать Google и получить некоторую информацию в качестве нового пользователя, может иметь некоторые инструменты поддержки (редакторы) за пределами vi. (Хотя пользователи программного обеспечения, как правило, понимают компьютер и с удовольствием используют vi.)
- Легко интегрируется с С++. Я не хочу, чтобы вытащить библиотеку 100mb и три разных компилятора, чтобы запустить ее и запустить.
- Поддержка табличного ввода (2d, n-мерный)
- Поддержка типов POD
- Может расширяться по мере необходимости в дополнительных вводах, хорошо связывается с переменными и т.д.
- Скорость обработки не очень важна.
- В идеале, как легко писать (отражать), так как читать
- Хорошо работает в Windows и Linux
- Поддержка композитинга (один файл ссылается на другой файл для чтения и т.д.)
- Человек, читаемый
В идеальном мире я бы использовал библиотеку только для заголовков или некоторую чистую реализацию STL, но я в порядке с использованием Boost или небольшой внешней библиотеки, если она работает хорошо.
Итак, что вы думаете о разных форматах? Недостатки? Преимущества?
Edit
Параметры для рассмотрения? Что еще добавить?
- XML
- YAML
- SQLite
- Буферы протокола Google
- Последовательность обновления
- INI
- JSON