Boost.Locale - строка Unicode в C ++ - PullRequest
       0

Boost.Locale - строка Unicode в C ++

1 голос
/ 06 февраля 2012

Могу ли я сделать так, чтобы все std :: string в моем приложении поддерживали Unicode с Boost.Locale?После прочтения документации могу сказать да.Но я не понимаю, как это работает.Главный вопрос: могу ли я по-прежнему использовать библиотеку алгоритмов ускорения строк или библиотеки Boost.Lexical_Cast?Если да, то почему мне нужны boost :: locale :: to_upper и аналогичные методы формата, если у меня есть эти методы в библиотеке алгоритмов Boost String.

1 Ответ

2 голосов
/ 07 февраля 2012

Да, вы можете сделать все строки в вашем приложении 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 , так как она должна решить большинство ваших проблем (особенно часто задаваемые вопросы, информацию о бэкенде генерации и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...