return 1;
}
double r = 5.2; //определение переменной
ofbin.write(reinterpret_cast<char *>(&r), sizeof(double)); //вывод в поток переменной r
struct date {int i, j, k;}; //определение структуры
date d = {12, 3, 2008}; //инициализация структуры
ofbin.write(reinterpret_cast<char *> (&d), sizeof(date)); //вывод структуры в поток
int m[6] = {1, 2, 3, 4, 5, 6}; //определение и инициализация массива
ofbin.write(reinterpret_cast<char *>(&m[0]), sizeof (m)); //вывод массива в поток
ofbin.close(); //закрываем файл
ifstreamifbin (“d:\\number.bin”, ios::binary|ios::nocreate); //открытие потока для ввода
if(!ifbin) {cout<< "error2"<< endl; //если ошибка
return 2;
}
double f; date dd;
ifbin.read (reinterpret_cast<char *> (&f), sizeof(f)); //чтение из потока значения f
cout <<f<<endl;
ifbin.read(reinterpret_cast<char *> (&dd), sizeof(date)); //чтение из потока целиком dd
cout << dd.i <<” “ << dd.j<< “ “<< dd.k << endl ;
int p[6];
ifbin.read(reinterpret_cast<char *>(&p[0]), sizeof (p)); //чтение из потока всего массива f
cout << p[0] << “ “ << p[5]<< endl;
return 0;
}
Бинарный файл, полученный в примере 2, копируется в другой бинарный файл:
#include <iostream.h>
#include <fstream.h>
void filecopy (ifstream &in, ofstream &out); //прототип функции копирования
void main()
{ ifstream ifbin (“d:\\number.bin”, ios::binary|ios::nocreate);
ofstream ofbin (“d:\\number1.bin”, ios::binary);
if (ifbin && ofbin) filecopy (ifbin, ofbin); //при успешном открытии потоков, выполняется копирование
ifbin.close(); //закрываем файлы
ofbin.close();
struct date {int i, j, k;}; //определение структуры
//создаем входной поток, открываем двоичный файл и связываем его с потоком
ifstream ifbin1 (“d:\\number1.bin”, ios::binary|ios::nocreate);
double f; date dd;
ifbin1.read (reinterpret_cast<char *> (&f), sizeof(double));
cout << f<<endl;
ifbin1.read(reinterpret_cast<char *> (&dd), sizeof(date));
cout << dd.i <<” “ << dd.j<< “ “<< dd.k << endl ;
int p[6];
ifbin1.read(reinterpret_cast<char *> (&p[0]), sizeof (p));
cout << p[0] << “ “ << p[5]<< endl;
}
void filecopy (ifstream &in, ofstream &out)
{char ch;
while (in.get(ch))
out.put(ch);
}
В следующей программе на экран выводится содержимое файла. Для чтения из файла используется функция get(). При выполнении программы имя файла необходимо задать в командной строке.
#include <fstream.h>
#include <iostream.h>
int main (int argc, char *argv[])
{char ch;
if (argc!=2) { cout << "Input name of file\n";
return 1;
}
ifstream infile (argv[1], ios::binary|ios::nocreate); //открытие файла и потока для ввода
if ( !infile) { cout << "Input error\n ";
return 2;
}
while (!infile.eof()) {
infile.get(ch); // ввод из файла предотвращает игнорирование пробелов
cout << ch;
}
return 0;
}
Содержимое файла:
123 1 2 3 4 qwert asd
Результаты работы программы:
123 1 2 3 4 qwert asd
Внимание !!!
Замена в цикле while (!infile.eof()) оператора ввода infile.get(ch) на infile >> ch
изменяет результаты работы программы на:
1231234qwertasd
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.