Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Boost.Locale: Text Conversions

Boost , ,

Text Conversions

Все эти функции получают<std::locale>объект в качестве параметра или используют глобальную локализацию по умолчанию.

Глобальный локальный используется во всех примерах ниже.

Case Handing

Например:

std::string grussen = "grüßEN";
std::cout <<"Upper "<< boost::locale::to_upper(grussen) << std::endl
<<"Lower "<< boost::locale::to_lower(grussen) << std::endl
<<"Title "<< boost::locale::to_title(grussen) << std::endl
<<"Fold "<< boost::locale::fold_case(grussen) << std::endl;

Буду печатать:

Upper GRÜSSEN
Lower grüßen
Title Grüßen
Fold  grüssen

Вы можете заметить, что существуют существующие функции<to_upper>и<to_lower>. Библиотека СтрингАлго. Разница в том, что эти функции работают по всей строке, а не выполняют неправильные преобразования символов по символам.

Например:

std::wstring grussen = L"grüßen";
std::wcout << boost::algorithm::to_upper_copy(grussen) << " " << boost::locale::to_upper(grussen) << std::endl;

Выделит результат:

GRÜßEN GRÜSSEN

Если буква «ß» не была правильно преобразована в двойную букву S в первом случае из-за ограничения<std::ctype>грани.

Это еще более проблематично в случае кодировок UTF-8, когда не US-ASCII вообще не конвертируется. Например, этот код

std::string grussen = "grüßen";
std::cout << boost::algorithm::to_upper_copy(grussen) << " " << boost::locale::to_upper(grussen) << std::endl;

Изменить только символы ASCII

GRüßEN GRÜSSEN

Unicode Normalization

Нормализация Unicode — это процесс преобразования строк в стандартную форму, подходящую для обработки и сравнения текста. Например, символ «ü» может быть представлен одной кодовой точкой или комбинацией символа «u» и diaeresis «?». Нормализация является важной частью обработки текста Unicode.

Unicode определяет четыре формы нормализации. Каждая конкретная форма выбирается флагом, переданнымдля нормализации.Функция:

Подробнее о формах нормализации читайте вэтой статье.

Notes

  • нормализоватьработает только на однокодовых строках, то есть: UTF-8, UTF-16 и UTF-32 в зависимости от ширины символа. Поэтому будьте осторожны при использовании кодировок без UTF, поскольку они могут быть обработаны неправильно.
  • fold_case— это, как правило, локально-независимая операция, но она получает локаль в качестве параметра для определения 8-битного кодирования.
  • Все эти функции могут работать со строкой STL, строкой NUL или диапазоном, определенным двумя указателями. Они всегда возвращают вновь созданную строку STL.
  • Длина строки может изменяться, см. приведенный выше пример.

Статья Boost.Locale: Text Conversions раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 14:27:24/0.0038149356842041/0