Работа с двоичными файлами Существуют два режима работы с файлами: текстовый и двоичный. По умолчанию файл открывается в текстовом режиме. Для работы с файлом в двоичном режиме, нужно указать режим 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; }