Работа с двоичными файлами Существуют два режима работы

advertisement
Работа с двоичными файлами
Существуют два режима работы с файлами:
текстовый и двоичный. По умолчанию файл
открывается в текстовом режиме. Для
работы с файлом в двоичном режиме,
нужно указать режим ios::binary.
Пример.
ofstream f("f.dat", ios::binary);
Методы класса Методы класса
ifstream:
ofstream:
seekg
tellg
seekp
tellp
read
write
seekg, seekp - установить указатель
чтения или записи
tellg, tellp - получить позицию
указателя чтения или записи
read(p, n) - считать n байтов из
файла и записать их по адресу p
write(p, n) - записать n байтов по
адресу p в файл
Пример 1.
Написать функцию out, принимающую в качестве параметра имя двоичного
файла и записывающую в него 5 чисел типа int, введенных с клавиатуры.
Написать функцию in, принимающую в качестве параметра имя двоичного
файла, считывающую записанные в него целые числа и выводящую их на экран.
Протестировать эти функции, вызвав их в функции main.
#include<iostream>
#include<fstream>
using namespace std;
const int M = sizeof (int);
void in(char * s)
{ifstream f (s,ios::binary);
int x;
while(f.read((char *)&x,M))
cout<<x<<" ";
cout<<endl;
}
void out(char * s)
{ofstream f (s,ios::binary);
int x;
for (int i=1; i<=5; i++)
{ cout<<"Enter x ";
cin>>x;
f.write((char *)&x,M);
}
}
int main()
{ out("f.dat");
in("f.dat");
return 0;
}
Пример 2.
Написать функцию change, принимающую в качестве параметров имя двоичного
файла, позицию m в нем и символ c. Эта функция должна записывать символ c
в позицию m указанного файла. Протестировать написанную функцию.
#include<iostream>
#include<fstream>
using namespace std;
void in(char * s)
{ifstream f (s,ios::binary);
char c;
while(f.read(&c,1))
cout<<c<<" ";
cout<<endl;
}
void change(char * s, int m, char c)
{ofstream f (s,ios::binary | ios::in);
f.seekp(m, ios:: beg);
f.write(&c,1);
}
void out(char * s)
{ofstream f (s,ios::binary);
char c;
for (int i=1; i<=5; i++)
{ cout<<"Enter c ";
cin>>c;
f.write(&c,1);
}
}
int main()
{ out("f.dat");
in("f.dat");
change("f.dat",3,'e');
in("f.dat");
return 0;
}
Download