Контрольная работа по дисциплине




АВТОНОМНАЯ НЕКОММЕРЧЕСКАЯ ОРГАНИЗАЦИЯ

ПРОФЕССИОНАЛЬНОГ ОБРАЗОВАНИЯ

«БАЛТИЙСКИЙ ИНФОРМАЦИОННЫЙ ТЕХНИКУМ»

 

 

Тема контрольной работы

« Работа с файлами в С++. »

Контрольная работа по дисциплине

« Основы алгоритмизации и программирования. »

 

Выполнил студент

Заочной формы обучения

Горевой Дмитрий Анатольевич

Проверил преподаватель АНО «БИТ»

 

Калининград

2017г.

 

СОДЕРЖАНИЕ

1. Работа с файлами в С++……………………………………………………………1
2. Список использованной литературы……………………………………………...5

 

 

Работа с файлами в С++

Большинство компьютерных программ работают с файлами, и поэтому возникает необходимость создавать, удалять, записывать читать, открывать файлы. Что же такое файл? Файл – именованный набор байтов, который может быть сохранен на некотором накопителе. Ну, теперь ясно, что под файлом понимается некоторая последовательность байтов, которая имеет своё, уникальное имя, например файл.txt. В одной директории не могут находиться файлы с одинаковыми именами. Под именем файла понимается не только его название, но и расширение, например: file.txt и file.dat разные файлы, хоть и имеют одинаковые названия. Существует такое понятие, как полное имя файлов – это полный адрес к директории файла с указанием имени файла, например: D:\docs\file.txt. Важно понимать эти базовые понятия, иначе сложно будет работать с файлами.
Для работы с файлами необходимо подключить заголовочный файл <fstream>. В <fstream> определены несколько классов и подключены заголовочные файлы <ifstream> файловый ввод и <ofstream> файловый вывод.
Файловый ввод/вывод аналогичен стандартному вводу/выводу, единственное отличие – это то, что ввод/вывод выполнятся не на экран, а в файл. Если ввод/вывод на стандартные устройства выполняется с помощью объектов cin и cout, то для организации файлового ввода/вывода достаточно создать собственные объекты, которые можно использовать аналогично операторам cin иcout.

Например, необходимо создать текстовый файл и записать в него строку Работа с файлами в С++. Для этого необходимо проделать следующие шаги:

1. создать объект класса ofstream;

2. связать объект класса с файлом, в который будет производиться запись;

3. записать строку в файл;

4. закрыть файл.

Почему необходимо создавать объект класса ofstream, а не класса ifstream? Потому, что нужно сделать запись в файл, а если бы нужно было считать данные из файла, то создавался бы объект класса ifstream.

1 2 // создаём объект для записи в файл ofstream /*имя объекта*/; // объект класса ofstream

Назовём объект – fout, Вот что получится:

  ofstreamfout;


1

Для чего нам объект? Объект необходим, чтобы можно было выполнять запись в файл. Уже объект создан, но не связан с файлом, в который нужно записать строку.

  fout.open("cppstudio.txt"); // связываем объект с файлом

Через операцию точка получаем доступ к методу класса open(), в круглых скобочках которого указываем имя файла. Указанный файл будет создан в текущей директории с программой. Если файл с таким именем существует, то существующий файл будет заменен новым. Итак, файл открыт, осталось записать в него нужную строку. Делается это так:

  fout<< "Работа с файлами в С++"; // запись строки в файл

Используя операцию передачи в поток совместно с объектом fout строка Работа с файлами в С++ записывается в файл. Так как больше нет необходимости изменять содержимое файла, его нужно закрыть, то есть отделить объект от файла.

  fout.close(); // закрываем файл

Итог – создан файл со строкой Работа с файлами в С++.

Шаги 1 и 2 можно объединить, то есть в одной строке создать объект и связать его с файлом. Делается это так:

1 ofstreamfout("cppstudio.txt"); // создаём объект класса ofstream и связываем его с файлом cppstudio.txt

Объединим весь код и получим следующую программу.

1 // file.cpp: определяет точку входа для консольного приложения.
2
3 #include "stdafx.h"
4 #include<fstream>
5 usingnamespacestd;
6
7 intmain(intargc, char* argv[])
8 {
9 ofstreamfout("cppstudio.txt"); // создаём объект класса ofstream для записи и связываем его с файлом cppstudio.txt
10 fout<< "Работа с файлами в С++"; // запись строки в файл
11 fout.close(); // закрываем файл
12 system("pause");
13 return 0;
14 }

Осталось проверить правильность работы программы, а для этого открываем файл cppstudio.txt и смотрим его содержимое, должно быть — Работа с файлами в


2

С++.
Для того чтобы прочитать файл понадобится выполнить те же шаги, что и при записи в файл с небольшими изменениями:

1. создать объект класса ifstream и связать его с файлом, из которого будет производиться считывание;

2. прочитать файл;

3. закрыть файл.

1 // file_read.cpp: определяет точку входа для консольного приложения.
2
3 #include "stdafx.h"
4 #include<fstream>
5 #include<iostream>
6 usingnamespacestd;
7
8 intmain(intargc, char* argv[])
9 {
10setlocale(LC_ALL, "rus"); // корректное отображение Кириллицы
11charbuff[50]; // буфер промежуточного хранения считываемого из файла текста
12ifstreamfin("cppstudio.txt"); // открыли файл для чтения
13
14 fin>>buff; // считали первое слово из файла
15cout<<buff<<endl; // напечатали это слово
16
17fin.getline(buff, 50); // считали строку из файла
18 fin.close(); // закрываем файл
19cout<<buff<<endl; // напечатали эту строку
20
21system("pause");
22return 0;
23 }

Впрограммепоказаныдваспособачтенияизфайла, первый – используяоперациюпередачивпоток, второй – используяфункцию getline(). В первом случае считывается только первое слово, а во втором случае считывается строка, длинной 50 символов. Но так как в файле осталось меньше 50 символов, то считываются символы включительно до последнего. Обратите внимание на то, что считывание во второй раз (строка 17) продолжилось, после первого слова, а не с начала, так как первое слово было прочитано в строке 14.
Программа сработала правильно, но не всегда так бывает, даже в том случае, если с кодом всё впорядке. Например, в программу передано имя несуществующего файла или в имени допущена ошибка. Что тогда? В этом случае ничего не произойдёт вообще. Файл не будет найден, а значит и прочитать его не возможно.

Поэтому компилятор проигнорирует строки, где выполняется работа с файлом. В результате корректно завершится работа программы, но ничего, на экране показано не будет. Казалось бы это вполне нормальная реакции на такую ситуацию. Но простому пользователю не будет понятно, в чём дело и почему на экране не появилась строка из файла. Так вот, чтобы всё было предельно понятно в С++ предусмотрена такая функция — is_open(), которая возвращает целые значения: 1 — если файл был успешно открыт, 0 — если файл открыт не был. Доработаем программу с открытием файла, таким образом, что если файл не открыт выводилось соответствующее сообщение.

1 // file_read.cpp: определяет точку входа для консольного приложения.
2
3 #include "stdafx.h"
4 #include<fstream>
5 #include<iostream>
6 usingnamespacestd;
7
8 intmain(intargc, char* argv[])
9 {
10 setlocale(LC_ALL, "rus"); // корректноеотображениеКириллицы
11 charbuff[50]; // буферпромежуточногохранениясчитываемогоизфайлатекста
12 ifstreamfin("cppstudio.doc"); // (ВВЕЛИНЕКОРРЕКТНОЕИМЯФАЙЛА)
13
14 if (!fin.is_open()) // еслифайлнеоткрыт
15 cout<< "Файлнеможетбытьоткрыт!\n"; // сообщитьобэтом
16 else
17 {
18 fin>>buff; // считалипервоесловоизфайла
19 cout<<buff<<endl; // напечаталиэтослово
20
21 fin.getline(buff, 50); // считалистрокуизфайла
22 fin.close(); // закрываемфайл
23 cout<<buff<<endl; // напечаталиэтустроку
24 }
25 system("pause");
26 return 0;
27 }

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

 

Список используемой литературы

 

1. Липпман С. Б. Основы программирования на C++: Пер. с англ. — М.:

2. Вильямс, 2002. — 256 с.

3.Липпман С. Б., Лажойе Ж. Язык программирования С++. Вводный курс:
Пер. с англ. — 3-е изд. — М.: ДМК, 2001. — 1104 с.

4. Страуструп Б. Язык программирования C++: Пер. с англ. — 3-е спец.
изд. — М.: Бином, 2003. — 1104 с.

5. Страуструп Б. Дизайн и эволюция языка C++. Объектно-ориентированный язык
программирования: Пер. с англ. — М.: ДМКпресс, Питер, 2006. — 448 с.

6. Эккель Б. Философия C++. Введение в стандартный C++: Пер. с англ. — 2-е изд.
— СПб.: Питер, 2004. — 572 с.

7. Эккель Б., Эллисон Ч. Философия C++. Практическое программирование:
Пер. с англ. — СПб.: Питер, 2004. — 608 с.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-23 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: