Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Топ:
Оснащения врачебно-сестринской бригады.
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Интересное:
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2021-12-07 | 33 |
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
Описанными здесь функциями и режимами не исчерпывается обширный аппарат потоковых классов для работы с файлами.
|
|
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!