30 Input/output library [input.output]

30.5 Iostreams base classes [iostreams.base]

30.5.3 Class ios_­base [ios.base]

30.5.3.1 Types [ios.types]

30.5.3.1.1 Class ios_­base​::​failure [ios::failure]

namespace std {
  class ios_base::failure : public system_error {
  public:
    explicit failure(const string& msg, const error_code& ec = io_errc::stream);
    explicit failure(const char* msg, const error_code& ec = io_errc::stream);
  };
}

Реализацию разрешено определять ios_­base​::​failure как синоним класса с функциональностью, эквивалентной классу, ios_­base​::​failure показанному в этом подпункте. [ Note: Когда ios_­base​::​failure является синонимом другого типа, он должен предоставлять вложенный тип failureдля имитации имени внедренного класса. ] Класс определяет базовый класс для типов всех объектов, созданных как исключения функциями в библиотеке iostreams, чтобы сообщать об ошибках, обнаруженных во время операций с буфером потока.end notefailure

При ios_­base​::​failure создании исключений реализации должны предоставлять значения, ec которые определяют конкретную причину сбоя. [ Note: Ошибки, возникающие в операционной системе, обычно сообщаются как system_­category() ошибки со значением ошибки, равным номеру ошибки, сообщаемому операционной системой. Об ошибках, возникающих в библиотеке потоков, обычно сообщается как error_­code(io_­errc​::​stream, iostream_­category()). ] end note

explicit failure(const string& msg, const error_code& ec = io_errc::stream);

Effects: Создает объект класса failure , создавая базовый класс с помощью msg и ec.

explicit failure(const char* msg, const error_code& ec = io_errc::stream);

Effects: Создает объект класса failure , создавая базовый класс с помощью msg и ec.

30.5.3.1.2 Type ios_­base​::​fmtflags [ios::fmtflags]

using fmtflags = T1;

Тип fmtflags - это bitmask type. Установка его элементов имеет эффекты, указанные в Табл 107.

Таблица 107 - fmtflags эффекты
ЭлементЭффект (ы), если установлен
boolalpha вставить и извлечь bool тип в алфавитном формате
dec преобразует целочисленный ввод или генерирует целочисленный вывод в десятичной системе счисления
fixed генерировать вывод с плавающей запятой в нотации с фиксированной запятой
hex преобразует целочисленный ввод или генерирует целочисленный вывод в шестнадцатеричной системе счисления
internal добавляет символы заливки в обозначенную внутреннюю точку в определенном сгенерированном выводе или идентично, right если такая точка не обозначена
left добавляет символы заливки справа (конечные позиции) определенного сгенерированного вывода
oct преобразует целочисленный ввод или генерирует целочисленный вывод в восьмеричной системе счисления
right добавляет символы заполнения слева (начальные позиции) определенного сгенерированного вывода
scientific генерирует вывод с плавающей запятой в экспоненциальной нотации
showbase генерирует префикс, указывающий числовую основу сгенерированного целочисленного вывода
showpoint безоговорочно генерирует символ десятичной точки в сгенерированном выводе с плавающей запятой
showpos генерирует + знак в неотрицательном сгенерированном числовом выводе
skipws пропускает начальные пробелы перед определенными операциями ввода
unitbuf сбрасывает вывод после каждой операции вывода
uppercase заменяет определенные строчные буквы их эквивалентами в верхнем регистре в сгенерированном выводе

Тип fmtflags также определяет константы, указанные в Табл 108.

Таблица 108 - fmtflags константы
ПостоянныйДопустимые значения
adjustfield left | right | internal
basefield dec | oct | hex
floatfield scientific | fixed

30.5.3.1.3 Type ios_­base​::​iostate [ios::iostate]

using iostate = T2;

Типом iostate является a bitmask type , содержащий элементы, указанные в таблице 109.

Таблица 109 - iostate эффекты
ЭлементЭффект (ы), если установлен
badbit указывает на потерю целостности во входной или выходной последовательности (например, на неисправимую ошибку чтения из файла);
eofbit указывает, что операция ввода достигла конца входной последовательности;
failbit указывает, что операция ввода не смогла прочитать ожидаемые символы или что операция вывода не смогла сгенерировать желаемые символы.

Тип iostate также определяет константу:

  • goodbit, нулевое значение.

30.5.3.1.4 Type ios_­base​::​openmode [ios::openmode]

using openmode = T3;

Тип openmode - это bitmask type. Он содержит элементы, указанные в таблице 110.

Таблица 110 - openmode эффекты
ЭлементЭффект (ы), если установлен
app стремиться закончить перед каждой записью
ate открывать и стремиться к завершению сразу после открытия
binary выполнять ввод и вывод в двоичном режиме (в отличие от текстового режима)
in открыт для ввода
out открыт для вывода
trunc обрезать существующий поток при открытии

30.5.3.1.5 Type ios_­base​::​seekdir [ios::seekdir]

using seekdir = T4;

Тип seekdir - это объект enumerated type , содержащий элементы, указанные в таблице 111.

Таблица 111 - seekdir эффекты
ЭлементИмея в виду
beg запросить поиск (для последующего ввода или вывода) относительно начала потока
cur запросить поиск относительно текущей позиции в последовательности
end запросить поиск относительно текущего конца последовательности

30.5.3.1.6 Class ios_­base​::​Init [ios::Init]

namespace std {
  class ios_base::Init {
  public:
    Init();
    ~Init();
  private:
    static int init_cnt; // exposition only
  };
}

Класс Init описывает объект, конструкция которого обеспечивает создание восьми объектов, объявленных в <iostream> ([iostream.objects]), которые связывают буферы файловых потоков со стандартными потоками C, предусмотренными функциями, объявленными в <cstdio>.

Для демонстрации поддерживаемые данные представлены здесь как:

  • static int init_­cnt, подсчитывает количество вызовов конструктора и деструктора для класса Init, инициализированного нулем.

Init();

Effects: Создает объект класса Init. Формирует и инициализирует объекты cin, cout, cerr, clog, wcin, wcout, wcerr, и , wclog если они еще не были построены и инициализируется.

~Init();

Effects: Уничтожает объект класса Init. Если нет других экземпляров класса все еще существует, звонки cout.flush(), cerr.flush(), clog.flush(), wcout.flush(), wcerr.flush(), wclog.flush().