Локальные контексты в С++

Локальные контексты в С++

В стандартной библиотеке С++ локальный контекст не является глобальной структурой данных, запрятанной где-то в недрах реализации библиотеки. Это объект типа std::locale, который можно создать и передать его другой функции, как любой другой объект. Пример создания объекта для стандартного локального контекста:

std::locale L = std::locale::classic():

Локальный контекст немецкого языка создается командой

std::locale L("de");

Имена локальных контекстов, как и в библиотеке С, не стандартизованы. Список имен локальных контекстов, доступных в вашей реализации, следует искать в документации.

Локальные контексты С++ делятся на фасеты (facets), связанные с разными аспектами интернационализации. Для извлечения заданного фасета из объекта локального контекста используется функция std:: use_facet[6]. Фасет ctype отвечает за классификацию символов, в том числе и преобразования типа. Если c1 и с2 относятся к типу char, следующий фрагмент сравнивает их без учета регистра по правилам локального контекста L.

const std::ctype<char>& ct = std::use_facet<std::ctype<char> > (L);

bool result = ct-toupper(cl)<ct.toupper(c2);

Предусмотрена особая сокращенная запись: std:: toupper (с, L), эквивалентная

std::use_facet<std::ctype<char> >(L).toupper(c)

Использование use_facet стоит свести к минимуму, поскольку оно связано с заметными затратами.

По аналогии с тем, как лексикографическое сравнение оказывается неподходящим в некоторых ситуациях, преобразования символов «один-в-один» тоже годятся не всегда (например, в немецком языке символ (3 нижнего регистра соответствует последовательности «SS» в верхнем регистре). К сожалению, средства преобразования регистра в стандартных библиотеках С и С++ работают только с отдельными символами. Если это ограничение вас не устраивает, решение со стандартными библиотеками отпадает.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Локальные стили

Из книги автора

Локальные стили То, что у каждого элемента-разделителя есть свое собственное содержание, делает эти элементы прекрасно подходящими для решений на Ajax. И снова HTML5 показывает свое происхождение из спецификации для веб-приложений.Однако если вы попытаетесь перенести


4.10 Локальные сети

Из книги автора

4.10 Локальные сети Рассмотрим, как IP и другие протоколы пакетируют кадры для пересылки по локальным сетям. Классическая локальная сеть предполагает следующие свойства:? Станции совместно используют физический носитель.? Существуют правила управления доступом к


Локальные политики

Из книги автора

Локальные политики Раздел Локальные политики содержит три политики: Политика аудита, Назначение прав пользователя и Параметры безопасности.? Политика аудита — позволяет определить события, факты происхождения которых будут записываться в журнал Безопасность


§ 73. Культурные контексты

Из книги автора

§ 73. Культурные контексты 27 октября 2001Отсутствие единых стандартов всегда будет преследовать человечество. Только примут один стандарт, появляется еще более правильный, но первым-то уже все пользуются. Так было с измерением времени — вроде все договорились про


ГЛАВА 13. Процессы, домены приложений, контексты и хосты CLR

Из книги автора

ГЛАВА 13. Процессы, домены приложений, контексты и хосты CLR В предыдущих двух главах мы рассмотрели шаги, которые предпринимаются в среде CLR при выяснении параметров размещения внешних компоновочных блоков, а также роль метаданных .NET. В этой главе мы рассмотрим подробности


Локальные контексты

Из книги автора

Локальные контексты В совете 35 приведена реализация сравнения строк без учета регистра символов с применением алгоритмов mismatch и lexicographical_compare, но в нем также указано, что полноценное решение должно учитывать локальный контекст. Книга посвящена STL, а не вопросам


ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ

Из книги автора

ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ      Мы уже несколько раз касались вопроса о том, что переменные в функции являются ее внутренними переменными и "не известны" вызывающей функции. Аналогично переменные вызывающей функции не известны вызываемой функции. Вот почему для связи с ней, т.


5.5.4. Локальные сокеты

Из книги автора

5.5.4. Локальные сокеты Сокеты, соединяющие процессы в пределах одного компьютера, работают в локальном пространстве имен (PF_LOCAL или PF_UNIX, это синонимы). Такие сокеты называются локальными или UNIX-сокетами. Их адресами являются имена файлов, указываемые только при создании


8.3. Локальные объекты

Из книги автора

8.3. Локальные объекты Объявление переменной в локальной области видимости вводит локальный объект. Существует три вида таких объектов: автоматические, регистровые и статические, различающиеся временем жизни и характеристиками занимаемой памяти. Автоматический


13.12. Локальные классы A

Из книги автора

13.12. Локальные классы A Класс, определенный внутри тела функции, называется локальным. Он виден только в той локальной области, где определен. Не существует синтаксиса, позволяющего обратиться к члену такого класса, в отличие от вложенного, извне локальной области


22.2. Локальные переменные

Из книги автора

22.2. Локальные переменные Что такое "локальная" переменная?локальные переменныеПеременные, объявленные как локальные, имеют ограниченную область видимости, и доступны только в пределах блока, в котором они были объявлены. Для функций это означает, что локальная


14.2. Локальные переменные

Из книги автора

14.2. Локальные переменные Переменные интерпретатора shell могут использоваться сценариями в период функционирования интерпретатора shell. После завершения выполнения интерпретатора действие этих переменных прекращается. Например, локальная переменная имя_файла может


10.4. Локальные сети

Из книги автора

10.4. Локальные сети Локальная сеть создается, как правило, для совместного использования ресурсов ЭВМ или данных (обычно в одной организации). С технической точки зрения локальная сеть – совокупность компьютеров и каналов связи, объединяющих компьютеры в структуру с


Контексты безопасности

Из книги автора

Контексты безопасности Контексты безопасности (Security Associations) образуют основу криптографических сервисов безопасности на базе протоколов IPsec. Для защиты двусторонней связи между узлами сети необходимы два контекста безопасности: один - для входящих потоков, другой - для