Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Бинарный файл/Двоичный файл





В бинарных файлов, входных и выходных данных с добычей и вставки операторов (<< and>>) и функций, таких как GetLine не является эффективным, так как нам не нужно форматировать данные, и данные не могут использовать разделение кодов, используемых текстовые файлы на отдельные элементы (например, пространства, новой строки, и т.д...).

 

Файл потоки включают в себя два члена функции, специально предназначенные для ввода и вывода данных двоичной последовательно: write and read. Первый (запись) является членом функция озЬгеат унаследовал ofstream. И чтение является членом функция IStream, который унаследовал геат. Объекты класса fstream оба членов. Их прототипами являются:

File streams include two member functions specifically designed to input and output binary data sequentially: write and read. Первая (write) является членом функции ostream унаследовал ofstream. И read является членом функции istream который унаследовал ifstream. Объекты класса fstream оба членов. Их прототипами являются:

write (memory_block, size);
read (memory_block, size);

Где memory_block имеет тип "указатель на символ" (символ *), и представляет собой адрес массива байт, где читал элементы данных хранятся или от того, где элементы данных должны быть записаны принимаются. Размер параметр является целым числом, которое определяет число символов для чтения или записи из / в memory block.

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 // reading a complete binary file #include <iostream> #include <fstream> using namespace std;   ifstream::pos_type size; char * memblock;   int main () { ifstream file ("example.bin", ios::in|ios::binary|ios::ate); if (file.is_open()) { size = file.tellg(); memblock = new char [size]; file.seekg (0, ios::beg); file.read (memblock, size); file.close();   cout << "the complete file content is in memory";   delete[] memblock; } else cout << "Unable to open file"; return 0; } the complete file content is in memory

 

В этом примере весь файл считывается и хранится в блоке памяти. Давайте рассмотрим, как это делается:


Во-первых, файл открыт с ios::ate флаг, который означает, что получить указатель будет располагаться в конце файла. Таким образом, когда мы призываем членов tellg (), мы сразу получаем размер файла. Обратите внимание на тип, который мы использовали, чтобы объявить переменную размера:

 

  ifstream::pos_type size;

 

ifstream::pos_type представляет собой особый тип используется для буфера и позиционирование файла и тип возвращаемого file.tellg (). Этот тип определяется как целое число типа, поэтому мы можем провести на ней те же операции мы проводим на любом другом целое значение, и может быть безопасно преобразован в другой целый тип достаточно большой, чтобы содержать размер файла. Для файла с размером в 2 Гб мы могли бы использовать Int:

 

1 2 int size; size = (int) file.tellg();

 

После того как мы получили размер файла, мы просим выделение блока памяти, достаточно большой, чтобы держать весь файл:

 

  memblock = new char[size];

 

Сразу после этого мы исходим, чтобы установить получить указатель на начало файла (помните, что мы открыли файл с этого указателя в конце), то читать весь файл, и, наконец, закрыть его:

 

1 2 3 file.seekg (0, ios::beg); file.read (memblock, size); file.close();

 

На данном этапе мы могли бы работать с данными, полученными из файла. Наша программа просто объявляет, что содержимое файла в память, а затем прекращается.

 







Дата добавления: 2015-08-12; просмотров: 309. Нарушение авторских прав; Мы поможем в написании вашей работы!




Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Кран машиниста усл. № 394 – назначение и устройство Кран машиниста условный номер 394 предназначен для управления тормозами поезда...

Приложение Г: Особенности заполнение справки формы ву-45   После выполнения полного опробования тормозов, а так же после сокращенного, если предварительно на станции было произведено полное опробование тормозов состава от стационарной установки с автоматической регистрацией параметров или без...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

Словарная работа в детском саду Словарная работа в детском саду — это планомерное расширение активного словаря детей за счет незнакомых или трудных слов, которое идет одновременно с ознакомлением с окружающей действительностью, воспитанием правильного отношения к окружающему...

Studopedia.info - Студопедия - 2014-2026 год . (0.012 сек.) русская версия | украинская версия