Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Топ:
Марксистская теория происхождения государства: По мнению Маркса и Энгельса, в основе развития общества, происходящих в нем изменений лежит...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Дисциплины:
2021-12-07 | 32 |
5.00
из
|
Заказать работу |
|
|
Наиболее общими операциями при работе с файлами являются операции открытия или создания файла, чтения или записи, установки указателя и закрытия файла. Все эти операции поддерживаются потоковыми классами. Для создания потока и связи его с конкретным создаваемым или открываемым файлом можно использовать конструктор соответствующего класса, в качестве аргументов которого указывается имя открываемого файла и, при необходимости, режим открытия, определяемый с помощью констант, описанных в классе ios. К наиболее употребительным относятся следующие режимы открытия:
ios:: binary – файл открывается в двоичном режиме. В этом случае все байты данных пересылаются в файл или из файла без всяких изменений. Следует иметь в виду, что по умолчанию все файлы открываются в текстовом режиме, в котором могут иметь место неявные преобразования байтов. Например, после кода 13 (который при выводе текстовых строк на экран или принтер обозначает возврат каретки) автоматически вставляется код 10 (перевод строки); могут происходить и потери байтов. Разумеется, такая ситуация при работе с числовыми данными недопустима, поэтому файлы с расчетными или экспериментальным данными всегда следует открывать в двоичном режиме.
ios:: app – весь вывод дописывается в конец файла. Этот режим удобен в том случае, когда полученными из какого-либо источника данными следует дополнить существующий файл.
ios:: ate – при открытии файла указатель в нем устанавливается, как и в режме ios:: app, на конец файла, однако далее вызовом функции seekp () указатель можно переместить на требуемую позицию и осуществить запись или чтение, начиная с любого байта файла (режим ios:: app не позволяет произвольно перемещать указатель).
|
ios:: trunc – открываемый файл усекается до нулевой длины, что приводит к потере всех содержащихся в нем данных (если указанный файл не существует, он создается заново). Для потоков вывода этот режим действует по умолчанию.
При необходимости можно указывать сразу несколько режимов, объединяя соответствующие константы с помощью операции побитового ИЛИ (|).
Приведем несколько примеров создания файловых потоков.
ofstream outpt1 (”a.dat”,ios::binary);// Создается поток
// outpt 1 для вывода в файл с именем A. DAT в двоичном режиме;
// существующий файл с таким именем затирается
ofstream outpt2 (”b.dat”,ios::binary|ios::ate);// Создается
// поток outpt 2 для вывода в конец существующего файла B. DAT
// в двоичном режиме с возможностью последующей установки
// указателя на любой байт файла
ifstream inpt (”a.dat”,ios::binary);// Создается поток inpt
// для ввода из файла A. DAT в двоичном режиме
Для записи в файл используется функция write () базового класса ostream, для чтения – функция read () базового класса istream. Как и всегда при работе с файлами, каждая операция записи или чтения перемещает указатель в файле в конец соответствующей порции данных. Таким образом, последовательные вызовы, например, функции write () будут дополнять файл новыми данными.
Функции записи и чтения требуют в качестве первого аргумента адрес записываемых данных, приведенный к типу char *, а в качестве второго – число записываемых байтов:
int mas[100];// Массив данных (100 целых чисел по 4 байта)
short d;// Переменная с данным
ofstream strmw (”1.dat”,ios::binary);// Создаем поток
// strmw для вывода в файл 1. DAT в двоичном режиме
strmw.write((char*)mas,400)// Записываем в 1. DAT 400 байтов
strmw.write((char*)&d,2)// Дописываем в 1. DAT еще 2 байта из d
int masin[100];// Массив для приема данных типа int
short din;// Переменная для приема данного типа short
ifstream strmr (”1.dat”,ios::binary);// Создаем поток strmr
// для ввода из файла 1. DAT в двоичном режиме
strmr.read((char*)masin,400);// Вводим первые 400 байт в массив
strmr.read((char*)&din,2);// Вводим еще2 байта в din
|
Установка указателя в файле осуществляется с помощью функций seekp () (при записи) или seekg () (при чтении):
int dd[2];// Массив для приема части данных
ifstream strm (”1.dat”,ios::binary);// Создаем поток strm для
// ввода из файла 1. DAT в двоичном режиме
strm.seekg (100);// Устанавливаем указатель на 26-е данное
// (пропустив 25 * 4 = 100 байтов)
strm.read((char*)dd,8);// Вводим в массив dd 26-е и 27-е данные
После окончания работы с потоком и файлом их следует закрыть функцией close ():
strm.close();// Закрывается поток strm, связанный с файлом 1. DAT
Описанными здесь функциями и режимами не исчерпывается обширный аппарат потоковых классов для работы с файлами.
|
|
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!