
- •Лабораторная работа №6. Запись / чтение структуры из файла. Теоретическая часть
- •Открытие и закрытие файлов
- •Класс istream
- •Функции get, getline и read
- •Функция возвращения
- •Позиционирование потока
- •Класс ostream
- •Функции вывода put и write
- •Функции класса filebuf
- •Функции класса streambuf
- •Функции класса strstreambuf
- •Определение состояния потока
- •Работа со списком.
- •Работа со списками через файл.
- •Контрольные вопросы:
- •Порядок выполнения лабораторной работы:
- •Практическая часть. Индивидуальные задания.
Функции класса filebuf
Таблица Функции класса filebuf
Функция |
Назначение |
open |
Открывает файл для чтения/записи, связывая с ним объект класса filebuf |
close |
Закрывает файл |
setmode
|
Задает режим доступа к файлу: двоичный (константа filebuf::binary) или текстовый (константа filebuf::text) |
attach |
Связывает указанный открытый файл с объектом класса filebuf |
fd |
Возвращает дескриптор класса |
is_open |
Проверяет, открыт ли файл, связанный с потоком |
Функции класса streambuf
Семейство функций-элементов streambuf используется классами, основанными на ios. Любой класс, порожденный от ios, наследует указатель на объект класса streambuf. Объекты класса streambuf управляют фиксированной областью памяти, называемой также областью резервирования, которая в свою очередь может быть разделена на область ввода и вывода ( они могут перекрывать друг друга).
Класс streambuf является абстрактным, т.е. создать его объект напрямую нельзя (его конструктор является защищенным и не может быть вызван из программы). Можно создавать собственные классы, порожденные от streambuf, переопределяя его виртуальные функции и настраивая его работу в соответствии с потребностями конкретного приложения. Только из производных классов можно вызвать многочисленные защищенные функции этого класса, управляющие областью резервирования.
Таблица Открытые функции класса streambuf
Функция |
Назначение |
in_avail |
Возвращает число символов в области ввода |
sgetc |
Возвращает символ, на который ссылается указатель области ввода; при этом указатель не перемещается |
snextc |
Перемещает указатель области ввода на одну позицию вперед, после чего возвращает текущий символ |
sbumpc |
Возвращает текущий символ и затем перемещает указатель области ввода на одну позицию вперед |
stossc |
Перемещает указатель области ввода на одну позицию вперед, но не возвращает символ |
sputbackc |
Перемещает указатель области ввода на одну позицию назад, возвращая символ в буфер |
sgetn |
Читает требуемое количество символов из буфера |
out_waiting |
Возвращает число символов в области вывода |
sputc |
Записывает символ в буфер и перемещает указатель области вывода на одну позицию вперед |
sputn |
Записывает требуемое количество символов в буфер и перемещает указатель области вывода на соответствующее число позиций вперед |
dbp |
В текстовом виде записывает в стандартный выходной поток различного рода информацию о состоянии буфера |
Таблица Виртуальные функции класса streambuf
Функция |
Назначение |
base |
Возвращает указатель на начало области резервирования |
ebuf |
Возвращает указатель на конец области резервирования |
blen |
Возвращает размер области резервирования |
pbase |
Возвращает указатель на начало области вывода |
pptr |
Возвращает значение указателя области вывода |
epptr |
Возвращает указатель на конец области ввода |
eback |
Возвращает указатель на начало области ввода |
gptr |
Возвращает значение указателя области ввода |
egptr |
Возвращает указатель на конец области вывода |
setp |
Задает значения указателей, связанных с областью вывода |
setg |
Задает значения указателей, связанных с областью ввода |
pbump |
Перемещает указатель области вывода на указанное число байтов относительно текущей позиции |
gbump |
Перемещает указатель области ввода на указанное число байтов относительно текущей позиции |
setb |
Задает значения указателей, связанных с областью резервирования |
unbuffered |
Задает или возвращает значение переменной, определяющей состояние буфера |
allocate |
Вызывает виртуальную функцию doallocate для создания области резервирования |
doallocate |
Выделяет память для области резервирования ( виртуальная функция) |
Таблица Виртуальные функции класса streambuf
Функция |
Назначение |
sync |
Очищает области ввода и вывода |
setbuf |
Добавляет к буферу указанную зарезервированную область памяти |
seekoff |
Перемещает указатель области ввода или вывода на указанное количество байтов |
seekpos |
Перемещает указатель области ввода или вывода на указанную позицию относительно начала потока |
overflow |
Очищает область вывода |
underflow |
Если область ввода пуста, заполняет ее данными из источника |
pbackfail |
Вызывается функцией sputbackc() в случае неудачной попытки вернуться назад на один символ |