Я заблудился в заголовочных файлах для boost property_tree и, учитывая отсутствие документации по нижним уровням, я решил спросить, как проще всего переопределить потоковый транслятор, чтобы изменить значения Boolean анализируются.
Проблема в том, что на входной стороне дерева свойств есть пользователи, которые могут изменять файлы конфигурации. Логическое значение может быть указано несколькими способами, например:
dosomething.enabled=true
dosomething.enabled=trUE
dosomething.enabled=yes
dosomething.enabled=ON
dosomething.enabled=1
Поведение по умолчанию - проверить 0 или 1, а затем использовать
std::ios_base::boolalpha
чтобы поток попытался проанализировать значение соответствующим образом для текущей локали ... что может быть безумно, если мы попытаемся отправить файл конфигурации международным клиентам.
Так, каков самый простой способ переопределить это поведение или только bool? Не только самый простой в реализации, но и самый простой в использовании - так что пользователям моего класса, производным от iptree, не нужно делать что-то особенное для логических значений.
Спасибо!