рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Cохранение данных в двоичных файлах.

Cохранение данных в двоичных файлах. - раздел Программирование, Работа с файловыми потоками в С++. Двоичные файлы. Сохранение В Двоичных Файлах Данных Стандартных Типов. Для То...

Сохранение в двоичных файлах данных стандартных типов.

Для того, чтобы открыть двоичный файл, необходимо задать режим доступа ios::binary (в некоторых компиляторах С++ - ios::bin).

Двоичные файлы более компактны и в некоторых случаях более удобны для обработки.

Для создания выходного файла создают объект

ofstream out_fil(“Outfil.dat”,ios::out | ios::binary);

if (! out_fil) { cerr<<”Error: Outfil.dat”<<endl;

exit(1);

}

Для того, чтобы открыть существующий двоичный файл для чтения, нужно создать объект

ifstream in_fil(“Infil.dat”,ois::in | ios::binary);

if (! in_fil) { cerr<<”Error: Infil.dat”<<endl;

exit(2);

}

К сожалению, созданные объекты in_fil и out_fil не слишком приспособлены для работы с двоичными файлами и требуют некоторых дополнительных действий, необходимых для корректной работы.

Пример 14.1. Запись значения типа double в двоичный файл.

# include <fstream>

# include <iostream>

using namespace std;

# include <stdlib.h>

 

class bin_outstream:public ofstream

{ public:

bin_outstream(const char *fn): ofstream(fn, ios::out | ios::binary){}

void writeOurDate(const void*, int);

ofstream &operator<<(double d) { writeOurDate(&d, sizeof(d));

return *this;

}

};

 

int main()

{ bin_outstream bin_out(“B_out.dat”);

if (! bin_out) { cerr<<”Unable to write to B_out.dat”<<endl;

exit(1);

}

double d = 5.252;

bin_out<<d;

bin_out<<d*d;

d = 5×2×E-5;

bin_out<<d;

return 0;

}

 

void bin_outstream:: writeOurDate(const void *Ptr, int len)

{ if (! Ptr) return;

if (len<=0) return;

write((char*)Ptr, len);

 

 

Пример 14.2. Чтение значений типа double из двоичного файла.

# include <fstream>

# include <iostream>

using namespace std;

# include <stdlib.h>

 

class bin_instream: public ifstream

{ public:

bin_instream(const char *fn): ifstream(fn, ios::in | ios::binary){}

void readOurDate(void*, int);

bin_instream &operator>>(double &d) { readOurDate(&d, sizeof(d));

return *this;

}

};

 

int main()

{ bin_instream bin_in(“B_in.dat”);

if (! bin_in)

{ cerr<<”Unable to open B_in.dat”<<endl;

exit(1);

}

double d;

long count = 0;

bin_in>>d;

while (! bin_in eof())

{ cout << ++count << “:’ << d << endl;

bin_in>>d;

}

return 0;

}

 

void bin_instream:: readOurDate(void *p, int len)

{ if (! p) return;

if (len <= 0) return;

read((char*)p, len);

}

 

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

 

Сохранение в двоичных файлах данных, имеющих тип, создаваемый пользователем.

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

– Конец работы –

Эта тема принадлежит разделу:

Работа с файловыми потоками в С++. Двоичные файлы.

На сайте allrefs.net читайте: "Работа с файловыми потоками в С++. Двоичные файлы."

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Cохранение данных в двоичных файлах.

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Произвольный доступ к элементам файлов.
Файловый указатель. Каждый файл имеет два связанных с ним значения: указатель чтения и указатель записи, по-другому называемые файловым указателем или текущей позицией. При

Требования к отчету.
Отчет должен содержать: - наименование и цель работы; - краткие теоретические сведения; - формулировку задания своего варианта; - текст программы для варианта за

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги