В этой статье мы рассмотрим Файлы и потоки в C++
Файл (file) – именованная совокупность данных, находящаяся на внешнем устройстве и имеющая определенные атрибуты (характеристики).
Поток (srteam) – абстрактный канал связи, создаваемый в программе для обмена данными.
Файл, рассматриваемый как последовательность строк символов, разделенных непробельными символами, называется текстовым. Его можно создавать и редактировать с помощью любого текстового редактора (WordPad, NotePad), а также с помощью редактора кода MVS.
Работа с текстовыми файлами
Для получения доступа к текстовому файлу(потоку) в MVS нужно:
-
Создать поток соответствующего типа:
ifsteram - для ввода из файла ;
ofsteram - для вывода в файл;
fsteram - для обмена с файлом в двух направлениях.
-
Связать его с файлом данных и открыть (open) для работы в определенном режиме:
void ifstream::open(const char *имя_файла, openmode режим=ios::in);
void ofstream::open(const char *имя_файла,
openmode режим=ios::out|ios::trunc);
void fstream::open(const char *имя_файла,
openmode режим=ios::in|ios::out);
где имя_файла – имя файла, в которое может входить спецификатор пути;
режим – задает режим открытия файла, может принимать значения:
Режим
|
Краткое описание
|
ios::app
|
Добавление в конец файла. Только для файлов открываемых для вывода.
|
ios::ate
|
Поиск конца файла при его открытии. Операции ввода/вывода могут быть выполнены в любом месте файла.
|
ios::binary
|
Открытие файла в двоичном режиме. По умолчанию все файлы открываются в текстовом режиме.
|
ios::in
|
Открытие файла для ввода
|
ios::out
|
Открытие файла для вывода
|
ios::trunc
|
Удаление содержимого ранее существовавшего файла с тем же названием и усечению его до 0 длины. При создании потока ofstreamлюбой ранее существовавший файл с тем же именем автоматически усекается до 0 длины
|
-
Обмен данными с файлом через поток: запись в поток; чтение из потока; управление состоянием потока.
Ввод-вывод в поток можно реализовать с помощью операторов << и >>. При этом информация форматируется также, как и на экране. При считывании строк можно использовать методы get и getline.
С помощью функции bool eof (); можно определить, был ли достигнут конец файла ввода.
-
Для закрытия потока используется функция close().