Цель лекции: изучить организацию потокового ввода-вывода в файлы, научиться решать задачи с использованием прямого доступа к данным файла на языке C++.
Для работы с файлами используются
Поток ifstream служит для работы с файлами в режиме чтения.
Поток ofstream служит для работы с файлами в режиме записи.
Поток fstream служит для работы с файлами в режиме как чтения, так и записи.
В программах на C++ при работе с текстовыми файлами в потоковом режиме необходимо подключать библиотеки iostream и fstream.
Для того чтобы начать работать с текстовым файлом, необходимо описать переменную типа ofstream.
Например, с помощью оператора
ofstream F;
будет создана переменная F для записи информации в файл.
На следующем этапе файл необходимо открыть для записи. В общем случае оператор
F.open("file", mode);
где F – переменная, описанная как ofstream;
file –
mode – режим работы с открываемым файлом.
Существуют следующие режимы для
| Режим | Описание |
|---|---|
|
открыть файл в режиме ifstream |
|
открыть файл в режиме записи данных, этот режим является режимом по умолчанию для потоков ofstream |
|
открыть файл в режиме записи данных в |
|
передвинуться в конец уже открытого файла |
|
очистить файл, это же происходит в режиме |
|
не выполнять операцию |
|
не открывать существующий файл |
|
открыть двоичный файл |
Параметр mode может отсутствовать, в этом случае файл открывается в режиме по умолчанию для данного потока:
– для потоков ifstream,
– для потоков ofstream.
После удачного F будет храниться 1 (true), в противном случае 0 (false). Это позволит проверять корректность операции
Если 0:
if (!ofs){
cout << "Файл не открыт\n";
}
Проверить успешность is_open(), имеющей следующий прототип:
Функция возвращает 1, если поток удалось связать с открытым файлом. Например,
if (!ofs.is_open()) cout << "Файл не открыт\n";
Открыть файл в режиме записи можно одним из следующих способов:
Первый способ
ofstream F;
F.open("abc.txt", ios::out);
Второй способ, режим является режимом по умолчанию для потока ofstream
ofstream F;
F.open("abc.txt");
Третий способ объединяет
ofstream F("abc.txt", ios::out);
После .
После
Например, для записи в поток F переменной a, оператор вывода будет иметь вид:
F << a;
Для последовательного вывода в поток G переменных b, c и d оператор вывода станет таким:
G << b << c << d;
Чтение из файла выполняется корректно до достижения конца файла. Для проверки, достигнут ли
ios::eof(),
которая имеет прототип int .
Данная функция возвращает 0, если 1 при достижении конца файла.
Открытые на диске файлы после окончания работы с ними рекомендуется закрыть. Оператор
F.close;
где F – переменная для записи информации в файл.
Для записи данных в файл нужно выполнить:
ofstream.open.cout.Для чтения данных из текстового файла нужно выполнить:
ifstream.open.cin при считывании каждой порции данных необходимо проверять, что чтение возможно.Пример. Работа с файлом в потоковом режиме.
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <fstream>
int _tmain(int argc, _TCHAR* argv[]){
int n = 50;
char str[20];
// Открываем файл для вывода
ofstream ofs("Test.txt");
// Проверка корректности открытия файла
if (!ofs) cout << "Файл не открыт.\n";
else {
ofs << "Hello!\n" << n;
// Закрываем файл
ofs.close();
}
// Открываем тот же файл для ввода
ifstream file("Test.txt");
// Проверка корректности открытия файла
if (!file) cout << "Файл не открыт.\n";
else {
file >> str >> n;
cout << str << "\n" << n;
// Закрываем файл
file.close();
}
system("pause");
return 0;
}
Поток fstream – это поток для работы с файлами в режиме, как чтения, так и записи.
Поток ifstream – это поток для работы с файлами в режиме чтения.
Поток ofstream – это поток для работы с файлами в режиме записи.
Поток как тип данных – это тип, который описывает объекты, реализующие процесс ввода и вывода данных в файлы.
Режимы открытия файлов – это наборы допустимых действий с открываемыми в программе файлами.
fstream, ifstream, ofstream – служит для работы с файлами в определенном режиме.Цель работы: изучить организацию потокового ввода-вывода в файлы, научиться решать задачи с использованием прямого доступа к данным файла на языке C++.
При выполнении лабораторной работы для каждого задания требуется написать программу на языке С++, которая получает на входе одну строковую величину, являющуюся корректным именем входного файла (при этом в программе следует предусмотреть проверку существования и корректности
Теоретические сведения.
Ознакомьтесь с материалом лекции 20.
Задания к лабораторной работе.
При выполнении заданий используйте работу с файлами с помощью потоков.
Указания к выполнению работы.
Каждое задание необходимо решить в соответствии с изученными методами обработки файлов в потоковом режиме в языке С++. В программном коде к каждой задаче следует выполнять
Следует реализовать каждое задание в соответствии с приведенными этапами:
Требования к отчету.
Отчет по лабораторной работе должен соответствовать следующей структуре.
Контрольные вопросы
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.