Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shprora_po_proge.docx
Скачиваний:
5
Добавлен:
23.09.2019
Размер:
518.78 Кб
Скачать

20. F.Write((char*)&s,sizeof(s));

21. };

В строке 22 закрывается файл, а в 24 – двоичный файл открывается для чтения.

В строках 25–26 организован цикл для чтения всех записей (в данном варианте программы двух записей) двоичного файл и вывода соответствующих значений на экран.

25. while (F.read((char*)&S,sizeof(S))) cout << S.marka <<

26. " "<< S.cena <<" "<< S.rashod << endl;

В строках 28-29 выводится размер структурного значения.

39 Прямой доступ в двоичных файлах.

Программист имеет возможность применять внутри двоичного файла прямой доступ, позиционируя внутренний файловый курсор либо относительно начала файла (beg), либо относительно текущей записи (cur).

1. #include<fstream>

2. #include<iostream>

3. usingnamespace std;

4. class avto

5. { public:

6. char marka[12];

7. int cena;

8. double rashod;

9. };

10. int main()

11. {

12. char FileName[20]; avto S;

13. cout <<"Vvedite imya FILE : "; cin >> FileName;

14. fstream F;

15. F.open(FileName,ios::out | ios::binary);

16. for(int i=0; i<4; i++)

17. { cout << endl;

18. cout <<"Vvedite marku avto: "; cin >> S.marka;

19. cout <<"Vvedite cenu avto: "; cin >> S.cena;

20. cout <<"Vvedite rashod avto: "; cin >> S.rashod;

21. F.write((char*)&S,sizeof(S)); };

22. F.close();

23. cout << endl <<"FILE "<< FileName <<" : \n";

24. F.open(FileName,ios::in | ios::binary);

25. F.seekg(sizeof(S),ios_base::beg);

26. F.read((char*)&S,sizeof(S));

27. cout << S.marka <<" "<< S.cena <<" "<<

28. S.rashod << endl;

29. F.seekg(sizeof(S),ios_base::cur);

30. F.read((char*)&S,sizeof(S));

31. cout << S.marka <<" "<< S.cena <<" "<<

32. S.rashod << endl;

33. F.seekg(0,ios_base::beg);

34. F.read((char*)&S,sizeof(S));

35. cout << S.marka <<" "<< S.cena <<" "<<

36. S.rashod << endl;

37. F.close();

38. cout << endl <<"SIZE OBJECT-CLASS avto = "<<

39. sizeof(avto) << endl;

40.return 0;

41. }

В строке 1 подключается библиотека <fstream>, внутри которой определены три класса ifstream, ofstream и fstream для работы с файлами.

В строках 4-9 описывается classavto, внутри которого определены 3 поля.

4. class avto

5. { public:

6. char marka[12];

7. Intcena;

8. doublerashod;

9. };

В строке 12 определяются переменная FileName для размещения имени двоичного файла на внешнем устройстве и объект S класса avto. В строке 13 обеспечивается ввод имени двоичного файла на внешнем устройстве.

В строке 14 создается поток Fкласса fstream, который в 15 строке ассоциируется с двоичным файлом на внешнем устройстве (имя файла на внешнем устройстве берется из переменной FileName), и двоичный файл открывается для вывода.

В строках 16-22 организован цикл для ввода значений 3 полей объекта S и для записи значений 4 экземпляров класса (объектов) в двоичный файл.

16. for(int i=0; i<4; i++)

17. { cout << endl;

18. cout <<"Vvedite marku avto: "; cin >> S.marka;

19. cout <<"Vvedite cenu avto: "; cin >> S.cena;

20. cout <<"Vvedite rashod avto: "; cin >> S.rashod;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]