|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Двоичный (бинарный) ввод/вывод. Объектный ввод/вывод (запись объектов в файл и чтение объектов из файла)Двоичный ввод/вывод Форматированный файловый ввод/вывод чисел целесообразно использовать В следующем примере показано, как в бинарном виде массив целых чисел запи- Листинг 12.9. Программа BINIO // binio.cpp // Двоичный ввод/вывод целочисленных данных #include <fstream> // для файловых потоков #include <iostream> using namespace std; const int MAX = 100; // размер буфера int buff[MAX]; // буфер для целых чисел
int main() { for(int j=0; j<MAX; j++) // заполнить буфер данными buff[j] = j; // (0, 1, 2,...) // создать выходной поток ofstream os("edata.dat", ios::binary); // записать в него os.write(reinterpret_cast<char*>(buff), MAX*sizeof(int)); os.close(); // должен закрыть его
for(j=0; j<MAX; j++) // стереть буфер buff[j] = 0; // создать входной поток ifstream is("edata.dat", ios::binary); // читать из него is.read(reinterpret_cast<char*>(buff), MAX*sizeof(int));
for(j=0; j<MAX; j++) // проверка данных if(buff[j]!= j) { cerr << "Некорректные данные!\n"; return 1; } cout << "Данные корректны\n"; return 0; } При работе с бинарными данными в качестве второго параметра write() и read() Объектный ввод/вывод Так как C++ — это все-таки объектно-ориентированный язык, было бы интересно Запись объекта на диск При записи объекта мы обычно используем бинарный режим. При этом на диск Листинг 12.10. Программа OPERS // opers.cpp // Сохранение объекта в файле #include <fstream> // для файловых потоков #include <iostream> using namespace std; /////////////////////////////////////////////////////////// class person // класс person { protected: char name[80]; // имя человека short age; // возраст public: void getData() // получить данные о человеке { cout << "Введите имя: "; cin >> name; cout << "Введите возраст: "; cin >> age; } }; /////////////////////////////////////////////////////////// int main() { person pers; // создать объект pers.getData(); // получить данные // создать объект ofstream ofstream outfile("PERSON.DAT", ios::binary); // записать в него outfile.write(reinterpret_cast<char*>(&pers), sizeof(pers)); return 0; } Метод getData() класса person вызывается для того, чтобы запросить у поль- Введите имя: Артур Содержимое данного объекта записывается на диск с помощью функции write(). Чтение объекта с диска Для чтения пригодится метод read(), что продемонстрировано в следующем лис- Листинг 12.11. Программа IPERS // ipers.cpp // Чтение объекта из файла #include <fstream> // для файловых потоков #include <iostream> using namespace std; /////////////////////////////////////////////////////////// class person // класс person { protected: char name[80]; // Имя человека short age; // его возраст public: void showData() // вывести данные { cout << "Имя: " << name << endl; cout << "Возраст: " << age << endl; } }; /////////////////////////////////////////////////////////// int main() { person pers; // переменная типа person ifstream infile("PERSON.DAT", ios::binary);// создать поток // чтение потока infile.read(reinterpret_cast<char*>(&pers), sizeof(pers)); pers.showData(); // вывести данные return 0; }
В результате работы программы будет выведено на экран все то, что было Имя: Артур Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.) |