Spec-Zone.ru › C++

std::ios_base

Определено в заголовочном файле <ios>
class ios_base;

Класс ios_base — это многоцелевой класс, который служит базовым классом для всех классов потоков ввода-вывода. Он хранит несколько типов данных:

1) информация о состоянии: флаги состояния потока.
2) информация о контроле: флаги, которые управляют форматированием последовательностей ввода и вывода, а также задают локаль.
3) приватное хранилище: индексируемая расширяемая структура данных, которая позволяет хранить как члены long, так и члены void*, которые могут быть реализованы в виде двух массивов произвольной длины или одного массива структур с двумя элементами, или другого контейнера.
4) обратные вызовы: произвольное количество пользовательских функций, которые вызываются из imbue(), std::basic_ios::copyfmt(), и ~ios_base().

Типичная реализация содержит константы-члены, соответствующие всем значениям fmtflags, iostate, openmode и seekdir, показанные ниже, переменные-члены для хранения текущей точности, ширины и флагов форматирования, маски исключений, состояния ошибки буфера, изменяемого контейнера, хранящего обратные вызовы, текущей заданной локали, приватного хранилища и статической целочисленной переменной для xalloc().

Члены-функции

(конструктор)
создаёт объект
(защищённая функция-член)
(деструктор)
[виртуальный]
уничтожает объект
(виртуальная публичная функция-член)
operator=
присваивает потоку
(публичная функция-член)
Форматирование
flags
управляет флагами форматирования
(публичная функция-член)
setf
устанавливает определённый флаг форматирования
(публичная функция-член)
unsetf
сбрасывает определённый флаг форматирования
(публичная функция-член)
precision
управляет десятичной точностью операций с плавающей запятой
(публичная функция-член)
width
управляет шириной поля
(публичная функция-член)
Локали
imbue
устанавливает локаль
(публичная функция-член)
getloc
возвращает текущую локаль
(публичная функция-член)
Внутренний расширяемый массив
xalloc
[статический]
возвращает уникальное целочисленное значение, которое безопасно использовать в качестве индекса для pword() и iword()
(публичная статическая функция-член)
iword
при необходимости изменяет размер приватного хранилища и обеспечивает доступ к элементу типа long по заданному индексу
(публичная функция-член)
pword
при необходимости изменяет размер приватного хранилища и обеспечивает доступ к элементу типа void* по заданному индексу
(публичная функция-член)
Разное
register_callback
регистрирует функцию обратного вызова события
(публичная функция-член)
sync_with_stdio
[статический]
устанавливает, будут ли библиотеки C++ и C ввода-вывода взаимодействовать
(публичная статическая функция-член)

Вложенные классы

failure
исключение потока
(публичный вложенный класс)
Init
инициализирует стандартные объекты потоков
(публичный вложенный класс)

Типы и константы членов

Тип Объяснение
openmode
Тип режима открытия потока

Также определены следующие константы:

Константа Объяснение
app Переход к концу потока перед каждым записыванием
binary Открытие в двоичном режиме
in Открытие для чтения
out Открытие для записи
trunc Очистка содержимого потока при открытии
ate Переход к концу потока сразу после открытия
noreplace (C++23) Открытие в эксклюзивном режиме

(typedef)
fmtflags
Тип флагов форматирования

Также определены следующие константы:

Константа Объяснение
dec Использование десятичной системы счисления для целочисленных операций ввода/вывода: см. std::dec
oct Использование восьмеричной системы счисления для целочисленных операций ввода/вывода: см. std::oct
hex Использование шестнадцатеричной системы счисления для целочисленных операций ввода/вывода: см. std::hex
basefield dec | oct | hex. Полезно для операций маскирования
left Выравнивание влево (добавляет символы заполнения справа): см. std::left
right Выравнивание вправо (добавляет символы заполнения слева): см. std::right
internal Внутреннее выравнивание (добавляет символы заполнения внутри): см. std::internal
adjustfield left | right | internal. Полезно для операций маскирования
scientific Генерирует типы с плавающей точкой в научной записи или шестнадцатеричной, если сочетается с fixed: см. std::scientific
fixed Генерирует типы с плавающей точкой в фиксированной записи или шестнадцатеричной, если сочетается с scientific: см. std::fixed
floatfield scientific | fixed. Полезно для операций маскирования
boolalpha Вставка и извлечение типа bool в алфавитно-цифровом формате: см. std::boolalpha
showbase Генерирует префикс, указывающий систему счисления для целочисленного вывода, требует индикатора валюты при денежных операциях ввода/вывода: см. std::showbase
showpoint Безусловно генерирует десятичный разделитель для вывода чисел с плавающей точкой: см. std::showpoint
showpos Генерирует символ + для неотрицательных чисел: см. std::showpos
skipws Пропускает начальные пробелы перед некоторыми операциями ввода: см. std::skipws
unitbuf Очищает вывод после каждой операции вывода: см. std::unitbuf
uppercase Заменяет некоторые строчные буквы на прописные в определённых операциях вывода: см. std::uppercase

(typedef)
iostate
Тип состояния потока

Также определены следующие константы:

Константа Объяснение
goodbit Отсутствует ошибка
badbit Неисправимая ошибка потока
failbit Ошибка операции ввода/вывода (ошибка форматирования или извлечения)
eofbit Связанная последовательность ввода достигла конца файла

(typedef)
seekdir
Тип направления поиска

Также определены следующие константы:

Константа Объяснение
beg Начало потока
end Конец потока
cur Текущая позиция указателя позиции потока

(typedef)
event
Указывает тип события
(перечисление)
event_callback
Тип обратного вызова функции
(typedef)
Устаревшие типы членов
Тип Объяснение
io_state (устарело) Целочисленный тип, который может использоваться как iostate
open_mode (устарело) Целочисленный тип, который может использоваться как openmode
seek_dir (устарело) Целочисленный тип, который может использоваться как seekdir
streamoff (устарело) Неопределённый тип, который может использоваться как off_type, необязательно std::streamoff
streampos (устарело) Неопределённый тип, который может использоваться как pos_type, необязательно std::streampos
(до C++17)

Отчёты об ошибках

Следующие отчёты об ошибках, меняющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применимо к Поведение как опубликовано Правильное поведение
LWG 1357
(N3110)
C++98 std::ios_base определённые оператор ~, оператор&
и оператор| для типов openmode, fmtflags и
iostate, нарушая требования BitmaskType[1]
удалены эти определения
  1. Тип BitmaskType должен поддерживать побитовые операции самостоятельно. Внешняя поддержка побитовых операций не должна предоставляться.

См. также

basic_ios
управляет произвольным буфером потока
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/ios_base

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API