Каковы компромиссы между boost :: locale и std :: locale?

Я нахожусь в процессе интернационализации большой унаследованной кодовой базы в C ++, и я столкнулся с трудным решением: я должен использовать языковые стандарты boost :: locale's или std c ++?

Я обязуюсь использовать utf-8. Мы должны выполнять достаточно широкий диапазон обработки текста, хотя это не является основой того, что делает наш код, это важно. Мы можем ожидать выполнения большей части того, что может понадобиться: форматирование времени, даты, числа и денег, сопоставление, регулярное выражение, изоляция подстроки, взаимодействие с boost :: filesystem, доступ к БД и т. Д.

введение для повышения :: локаль я понимаю

Установка глобальной локали имеет побочные эффекты (пример csv). Это влияет на printf и boolst lexical_cast. Некоторые сторонние библиотеки могут сломаться.Форматирование чисел не работает в некоторых локалях.Названия локалей не стандартизированы.Многие поставщики предоставляют только C и POSIX, поэтому GCC поддерживает локализацию только под Linux.

У меня проблемы с оценкой воздействия пункта 1, я думаю, что пункт 2 довольно серьезный, если он затрагивает нас, объявления 3 и 4 не будут иметь большого значения для нас.

Есть ли в сообществе мнение, что Boost :: locale - лучшая альтернатива? Есть ли какое-либо движение в стандартной комитете для решения проблем с std :: locale's? Может ли кто-нибудь помочь мне принять более обоснованное решение?

Возможно, самое главное, легко ли перейти от одного к другому? Насколько хорошо они играют друг с другом? Законно ли установить глобальный языковой стандарт с улучшенным языковым стандартом, а затем использовать стандартные средства?

Ответы на вопрос(2)

Ваш ответ на вопрос