Типы данных

Типы streamsize и streamoff

Объект типа streamsize в состоянии хранить самое большое число байтов, которое будет передано во время любой одной операции ввода-вывода. Это разновидность целого типа данных. Объект типа streamoff способен содержать значение, которое указывает позицию смещения внутри потока. Это также разновидность целого типа данных. Данные типы определены в заголовке <ios>, который автоматически включается системой ввода-вывода.

Типы streampos и wstreampos

Объект типа streampos способен содержать значение, которое представляет позицию внутри потока символов типа char. Объект типа wstreampos способен содержать значение, которое представляет позицию внутри потока символов типа wchar_t. Эти типы определены в заголовке <ios_fwd>, который автоматически включается системой ввода-вывода.

Типы pos_type и off _type

Типы pos_type и off_type создают объекты(обычно целочисленные), которые способны содержать значения, представляющие позицию и смещение соответственно внутри потока. Эти типы определены в классе ios(и других классах) и по сути аналогичны типам streamoff и streampos(или их эквивалентам, работающим с символами широкого формата).

Тип open_mode

Тип open_mode определяется в классе ios_base и описывает, как будет открыт файл. Объект этого типа может принимать одно или несколько из следующих значений.

арр Добавление в конец файла
ate Переход в конец файла при открытии
binary Открытие файла для двоичных операций
in Открытие файла для ввода
out Открытие файла для вывода
trunc Очистка файла при условии его существования

Используя оператор ИЛИ(OR), можно объединять в одном выражении два или больше значений(из перечисленных выше).

Тип iostate

Текущее состояние потока ввода-вывода описывается объектом типа iostate, который представляет собой перечисление, определенное в классе ios_base и включающее следующие члены.

goodbit  He обнаружено никаких ошибок
eofbit Обнаружен конец файла
failbit Обнаружена нефатальная ошибка ввода-вывода
badbit Обнаружена фатальная ошибка ввода-вывода

Тип seekdir

Тип seekdir описывает, как будет происходить операция произвольного доступа к файлу. Этот тип определен в классе ios_base, а его допустимые значения перечислены ниже.

bed  Начало файла
cur Текущая позиция
end Конец файла

Класс failure

В классе ios_base определен тип исключения failure. Он служит в качестве базового класса для типа исключений, которые могут быть сгенерированы системой ввода-вывода. Этот класс наследует класс exception(стандартный класс исключений). Класс failure имеет следующий конструктор.

Копировать
explicit failure(const string &str);

Здесь str — сообщение, которое описывает ошибку. Это сообщение может быть получено из объекта failure путем вызова его функции what().

Копировать
virtual const char *what() const throw();