- •Работа с текстовыми файлами
- •ФАЙЛ – это именованный набор данных, хранящийся на внешней памяти.
- •Курсор доступа для бинарных файлов
- •Основные операции работы с файлами (1)
- •Основные операции работы с файлами(2)
- •Операторы записи в поток-текстовые файлы.
- •Пример 1(текстовые файлы)
- •Продолжение –запись в файл
- •Продолжение 2-чтение из файла
- •Тест для проверки набрали в блокноте
- •Пример 2 Программа, которая читает файл с именем in_file и выводит все прочитанные
- •Другие способы чтения из текстового потока
- •Функция getline
- •Функция getline
- •Обработка случая, когда указанного файла не существует
- •Проверка на наличие файла (is_open)
- •Функция, которая считывает заданный по имени файл
- •Посимвольное чтение из файла с функцией
- •Описание функции two_space (чтение и запись символов в файл)
- •Функция дозаписи в файл
- •Пример 3 Добавление в текстовый файл
- •Добавление в файл строк -appendTextFile
- •Главная программа
- •Исходный и результирующий файлы
- •Пояснения 1
- •Пояснения 2
- •Пример 4.Текстовые файлы
- •Продолжение примера
- •Пояснения 1
- •Пояснения 2
- •Пример5. Написать программу, подсчитывающую общее количество символов count в текстовом файле. Предварительно файл
- •ПОЯСНЕНИЯ:
- •Пример6 . Написать программу, выполняющую несколько способов
- •Эти функции были рассмотрены раньше в других примерах
- •//Главная функция
- •case '2':
- •Пояснения
Работа с текстовыми файлами
Ввод –вывод в С++. Основные положения
1.В С++ ввод/вывод потоковый , буферизованный
2.Поток –последовательность байтов, которая не зависит от устройства.
3.Обмен между программами и устройствами осуществляется через буфера ввода-вывода за заполнением и освобождением которых
следит операционная система.
4.Задача программиста установить связь между потоком данных, который в программе имеет логическое имя и конкретным
устройством, которое показывает физическое нахождение данных.
5.В зависимости от направления обмена потоки данных делятся на входные ,выходные (файловые) и стандартные. Стандартные относятся к дисплею и клавиатуре. Поток считается файловым, если он относится к внешнему накопителю.
6.В С++ реализованы два вида потоков – процедурный, который обслуживается библиотекой stdio.h и объектно-ориентированный, который обслуживается библиотекой iostream.h
ФАЙЛ – это именованный набор данных, хранящийся на внешней памяти.
В С++ два типа файлов: текстовые и двоичные(бинарные)
Текстовые файлы состоят из строк. Доступ к строкам последовательный друг за другом.
Бинарные файлы –информация хранится во внутренней форме представления, их нельзя посмотреть в текстовом редакторе. Их преимущество в том, что при чтении нет преобразования во внутреннюю форму представления и обратно. Кроме того, в бинарных файлах возможен прямой доступ к информации путем установки текущей
позиции указателя(курсора) доступа при помощи специальной функции, которая устанавливает курсор доступа в нужную позицию.
Курсор доступа для бинарных файлов
Введём понятие «позиция доступа».
f |
. . . |
|
позиция
доступа
Основные операции работы с файлами (1)
1.Объявить (описать) файловую переменную (имя файла в программе)
•для вывода в него ofstream out("name-of-file”);
•для ввода из него ifstream inf("name-of-file");
Основные операции работы с файлами(2)
2. Открыть файл для записи или считывания out.open ("my_fil.txt");//открытие для записи inf.open("my_fil.txt");//открыть для считывания
3.Закрыть по окончании работы с файлом out.close();//закрыли по окончании записи inf.close();// закрыли после окончания считывания
Файлы –это потоки для внешних носителей, для работы с ними используют библиотеки ifstream,
ofstream .Библиотека ifstream обслуживает чтение из файла,а ofstream запись в файл
Операторы записи в поток-текстовые файлы.
Класс для записи в файл ofstream:
// имя файла |
Файловая переменная-имя файла |
в программе |
ofstream output(“my1.txt”); |
Имя файла во внешней |
|
output << "hello" << endl; |
||
памяти |
||
|
Для проверки того , что записалось в файл, откроем его и прочитаем содержимое:
ifstream input(“my1.txt”);
if (input) { Открыли для чтения тот же файл
string line;
while (getline(input, line)) { cout << line << endl; } }
Пример 1(текстовые файлы)
В файл o_file с клавиатуры вводится информация о студентах, затем этот файл используется как входной i_file и из него информация выводится на экран.
Для чтения и записи в текстовый файл используем перегруженные для стандартных типов операции
<<- запись в поток <<- чтение из потока
#include <fstream>//подключение библиотеки
#include <iostream> using namespace std; struct student{
char fio[15];
int god;//возраст }el,el1;
Продолжение –запись в файл
int main(void){
ifstream i_file;//файл из которого читают ofstream o_file;//файл , в который пишут
o_file.open("my_fil.txt");//открытие для записи в него for (int i=0;i<3;i++)
{cout<<"imj\n"; cin>>el.fio;
cout<<"vozrast\n"; cin>>el.god; o_file<<el.fio<<endl;//запись по полям в файл o_file o_file<<el.god<<endl;//
}
o_file.close();//закрыли по окончании записи
// введена информация о трех студентах в файл с именем //my_fil.txt,он расположен в той же папке(директории), где //находится эта программа
Продолжение 2-чтение из файла
i_file.open("my_fil.txt");//файл открыли
//как входной читаем из него как писали по полям и выводим на //экран
for(int i=0;i<3;i++)
{ i_file>>el1.fio; cout<<"imj= "; cout<<el1.fio<<endl; i_file>>el1.god;cout<<"vozrast= "; cout<<el1.god<<endl;
}
i_file.close();//закрыли после работы return 0;}