Я пишу приложение Qt, и мне нужно будет сохранить настройки программы. Я хочу, чтобы они могли легко редактироваться неопытными пользователями, но при этом были достаточно гибкими для опытных пользователей (таким образом, позволяли легко автоматизировать редактирование с помощью других программ, скриптов и т. Д.). QSettings предоставляет два формата: собственный формат, который для Windows является реестром, и формат INI, который является родным для большинства других платформ. С INI все в порядке, но просмотр @QString (...) или других материалов Qt там на самом деле не читабелен и может привести к ошибкам.
Реестр тоже не велик. Это не было разработано, чтобы быть запутанным и таким образом не совсем хорошим для редактирования или расширенного использования; это решает проблему синхронизации между потоками и несколькими объектами QSettings (поэтому я не уничтожаю все, хотя могу использовать только один глобальный объект, защищенный блокировщиком чтения-записи). Я смотрю на XML, но он чертовски многословен и требует написания формата QSettings (на самом деле не проблема), но очень гибкий.
Я знаю, что существуют другие альтернативы XML, но я не очень знаком с ними; Я, конечно, не хочу писать парсер, исключение для моего собственного окончательного формата, а не для базовых вещей.
Обновление - Примечание: Я вообще не буду обходить QSettings, я просто напишу для него формат, который выглядит так, как будто пройдены всего два указателя на функции (для функции чтения и записи) статической функции, и тогда я могу использовать свой формат.
Обновление 2: Я также беспокоюсь о серверах Linux, которые обычно не имеют графического интерфейса. Я хочу, чтобы люди могли легко редактировать конфигурацию с сервера через nano или что-то подобное, без использования менеджера (да, у меня будет демон-сервер и удаленный менеджер графического интерфейса).