Да, вы можете сделать все строки в вашем приложении Unicode с кодировкой Boost.Locale.
Чтобы это работало, вы вставляете языковой стандарт в строку или устанавливаете глобальный языковой стандарт по умолчанию на свой новый языковой стандарт на основе юникода (сгенерированный Boost.Locale).
Смотрите здесь, как это сделать: http://www.boost.org/libs/locale/doc/html/locale_gen.html
и http://www.boost.org/libs/locale/doc/html/faq.html
API-интерфейсы для работы со строками в Boost.Locale отличаются от тех, которые представлены в библиотеке алгоритма строкового алгоритма Boost.
Узнайте, почему функции Boost.Locale лучше: http://www.boost.org/libs/locale/doc/html/conversions.html
Вы все еще можете использовать boost :: lexical_cast, при условии, что вы правильно задали глобальную локаль (поскольку, если я правильно помню, вы не можете явно передать объект локали в Boost.LexicalCast).
Имейте в виду, однако, что это «сломает» некоторые случаи, например, при преобразовании целого числа в строку вместо использования языкового стандарта C (как, вероятно, было вашим предыдущим значением по умолчанию), он будет использовать другой, который могут вставлять разделители и т. д. При выполнении преобразований, которые НЕ отображаются для пользователя, вы можете использовать std :: stringstream et al. напрямую, чтобы избежать нежелательных изменений форматирования.
Я настоятельно рекомендую вам полностью прочитать документацию Boost.Locale , так как она должна решить большинство ваших проблем (особенно часто задаваемые вопросы, информацию о бэкенде генерации и т. Д.).