Namespaces
Variants

std:: ios_base

From cppreference.net
< cpp ‎ | io
Определено в заголовке <ios>
class ios_base ;

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

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

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

Содержание

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

конструирует объект
(защищенная функция-член)
[virtual]
уничтожает объект
(виртуальная публичная функция-член)
присваивает потоку
(публичная функция-член)
Форматирование
управляет флагами формата
(публичная функция-член)
устанавливает конкретный флаг формата
(публичная функция-член)
сбрасывает конкретный флаг формата
(публичная функция-член)
управляет десятичной точностью операций с плавающей точкой
(публичная функция-член)
управляет шириной поля
(публичная функция-член)
Локали
устанавливает локаль
(публичная функция-член)
возвращает текущую локаль
(публичная функция-член)
Внутренний расширяемый массив
[static]
возвращает уникальное для программы целое число, безопасное для использования в качестве индекса для pword() и iword()
(публичная статическая функция-член)
изменяет размер приватного хранилища при необходимости и предоставляет доступ к long элементу по заданному индексу
(публичная функция-член)
изменяет размер приватного хранилища при необходимости и предоставляет доступ к void * элементу по заданному индексу
(публичная функция-член)
Разное
регистрирует функцию обратного вызова событий
(публичная функция-член)
устанавливает, являются ли библиотеки ввода-вывода C++ и C взаимозаменяемыми
(публичная статическая функция-член)

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

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

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

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

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

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

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

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

Константа Объяснение
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)
тип состояния потока

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

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

(typedef)
тип направления позиционирования

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

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

(typedef)
определяет тип события
(enum)
тип функции обратного вызова
(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 определял operator~ , operator &
и operator | для типов openmode , fmtflags и
iostate , нарушая требования BitmaskType [1]
удалены эти определения
  1. Тип BitmaskType должен поддерживать побитовые операции самостоятельно. Поддержка побитовых операций не должна предоставляться извне.

Смотрите также

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