На этом шаге мы рассмотрим вопросы, связанные с интернационализацией данных.
Форматы ввода-вывода также адаптируются к национальным стандартам. Функции, определенные для этой цели в классе ios_base, перечислены в таблице 1.
Функция | Описание |
---|---|
imbue(loc) | Назначение объекта локального контекста |
getloc() | Получение текущего объекта локального контекста |
С каждым потоком данных связывается некоторый объект локального контекста. По умолчанию исходный объект локального контекста создается как копия глобального объекта локального контекста на момент конструирования потока данных. В частности, объект локального контекста определяет параметры форматирования чисел (например, символ, используемый в качестве десятичной точки, или режим числового/строкового представления логических величин).
В отличие от аналогичных средств С средства интернационализации стандартной библиотеки C++ позволяют задавать локальные контексты на уровне отдельных потоков данных. Например, такая возможность позволяет выполнять чтение вещественных чисел в американском формате и последующей записи в немецком формате (в котором вместо "десятичной точки" используется запятая).
При работе с потоками данных часто возникает задача приведения отдельных символов (в первую очередь управляющих) к кодировке потока данных. Для этого в потоках данных поддерживаются функции преобразования, представленные в таблице 2.
Функция | Описание |
---|---|
widen(c) | Преобразование символа с типа char к кодировке, используемой потоком |
narrow(c,def) | Преобразование символа с из кодировки, используемой потоком, к типу char (если такого символа не существует, возвращается def) |
Например, следующая команда преобразует символ новой строки в кодировку, используемую потоком данных:
strm.widen('\n');
Со следующего шага мы начнем рассматривать доступ к файлам.