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().

Функции-члены

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

Классы-члены

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

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

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

(псевдоним типа)
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

(псевдоним типа)
iostate
тип состояния потока

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

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

(псевдоним типа)
seekdir
тип направления перемещения

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

Константа Описание
beg начало потока
end конец потока
cur текущая позиция указателя положения в потоке

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

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

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

Отчёт об ошибке Применён к Поведение согласно опубликованной версии Исправленное поведение
LWG 1357
(N3110)
C++98 std::ios_base определял operator~, operator&
и operator| для типов 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/cpp/io/ios_base

Spec-Zone.ru

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