Шаг 492.
Библиотека STL. Ввод-вывод с использованием потоковых классов. Стандартные функции ввода-вывода. Форматирование. Интернационализация

    На этом шаге мы рассмотрим вопросы, связанные с интернационализацией данных.

    Форматы ввода-вывода также адаптируются к национальным стандартам. Функции, определенные для этой цели в классе ios_base, перечислены в таблице 1.

Таблица 1. Функции интернационализации
Функция Описание
imbue(loc) Назначение объекта локального контекста
getloc() Получение текущего объекта локального контекста

    С каждым потоком данных связывается некоторый объект локального контекста. По умолчанию исходный объект локального контекста создается как копия глобального объекта локального контекста на момент конструирования потока данных. В частности, объект локального контекста определяет параметры форматирования чисел (например, символ, используемый в качестве десятичной точки, или режим числового/строкового представления логических величин).

    В отличие от аналогичных средств С средства интернационализации стандартной библиотеки C++ позволяют задавать локальные контексты на уровне отдельных потоков данных. Например, такая возможность позволяет выполнять чтение вещественных чисел в американском формате и последующей записи в немецком формате (в котором вместо "десятичной точки" используется запятая).

    При работе с потоками данных часто возникает задача приведения отдельных символов (в первую очередь управляющих) к кодировке потока данных. Для этого в потоках данных поддерживаются функции преобразования, представленные в таблице 2.

Таблица 2. Вспомогательные функции интернационализации
Функция Описание
widen(c) Преобразование символа с типа char к кодировке, используемой потоком
narrow(c,def) Преобразование символа с из кодировки, используемой потоком, к типу char (если такого символа не существует, возвращается def)

    Например, следующая команда преобразует символ новой строки в кодировку, используемую потоком данных:

strm.widen('\n');

    Со следующего шага мы начнем рассматривать доступ к файлам.




Предыдущий шаг Содержание Следующий шаг