Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
30
Добавлен:
17.04.2013
Размер:
1.56 Кб
Скачать
#include <fstream>
#include <iostream>
#include <conio.h>
#include <stdlib.h>

class bin_stream:public fstream
	{
   public:
       bin_stream(const char *fn): fstream(fn, ios::out | ios::in | ios::binary) {}
       void doneOurDate(const void*, int, int);

       bin_stream &operator<<(int d) {
       	doneOurDate(&d, sizeof(d),0);
			return *this;
		 }
       bin_stream &operator>>(int &d) {
       	doneOurDate(&d, sizeof(d),1);
			return *this;
		 }
};

void bin_stream::doneOurDate(const void *Ptr, int len, int sign) {
	if (!Ptr)   return;
   if (len <= 0)   return;
   if (sign==0)
   	write((char*)Ptr, len);
	else
   	read((char*)Ptr, len);
}

int main()
{ int  n, f;
   randomize();

   cout << "Enter number of elements: ";
   cin >> n;
   bin_stream bin_out("Bin.dat");
	if (!bin_out) {
   	cerr << "Unable to write to Bin.dat" << endl;
		exit(1);
   }

   cout << "This is your file:" << endl;
   for (int i = 0; i < n; i++) {
   	f = random(100)-50;
		bin_out << f;
      cout << f << " ";
	}
   bin_out << '\n';
   cout << endl;


   bin_out.seekp(0, ios::beg);		//predpologim, chto ne znaem razmer file, poschitaem ego
   while(1){
      bin_out >>f;
      if( f=='\n' ) break;
      if(f%2==0){
      	bin_out.seekp(-1*sizeof(int),ios::cur);
         bin_out << 0;
      }
   }

   cout << "File posle modifikacii: " << endl;
   bin_out.seekp(0, ios::beg);
   while(1){
   	bin_out >> f;
      if( f=='\n' ) break;
		cout << f <<' ';
	}

   getch();
   return 0;

}


Соседние файлы в папке file_bin