Изменить то, как boost::property_tree reads переводит строки в bool

Я заблудился в файлах заголовков для boost property_tree и, учитывая отсутствие документации по нижним уровням, я решил спросить, какой простой способ переопределить транслятор потока, чтобы изменить способ анализа логических значений.

Проблема в том, что на входной стороне дерева свойств есть пользователи, и они могут изменять файлы конфигурации. Логическое значение может быть указано несколькими способами, например:

dosomething.enabled=true
dosomething.enabled=trUE
dosomething.enabled=yes
dosomething.enabled=ON
dosomething.enabled=1

Поведение по умолчанию — проверить наличие 0 или 1, а затем использовать

std::ios_base::boolalpha 

, чтобы заставить поток попытаться проанализировать значение соответствующим образом для текущего locale... что может быть безумием, если мы попытаемся отправить файл конфигурации международным клиентам.

Итак, как проще всего переопределить это поведение или использовать только bool? Не только проще всего реализовать, но и проще всего использовать, так что пользователям моего класса, производного от iptree, не нужно делать что-то особенное для логических значений.

Спасибо!

14
задан Arunas 16 March 2012 в 23:20
поделиться