Arbeiten mit Dateien in C ++. Teil 2 – Библиотека fstream.




Класс ofstream

Обратный классу ifstream, который мы рассмотрели ранее, и призван для записи в файл.

Как и в ifstream, для открытия или создания файла используется конструктор или метод öffnen().

Или конструктором:

Параметр ios_base::app указывается, если нужно дописывать в конец уже имеющегося файла. Например когда программа ведет лог своей работы

За проверку на открытость файла отвечает все та же ist offen()

Принцип тот же. Так же можно проверить открыт ли файл, использовав в logischer Ausdruck саму файловую переменную:

Betreiber <<

Перенаправляет форматированный вывод в файл. Принцип тот же, что и у аналога из iostream.

Предназначен для вывода в текстовые файлы. Управляется операциями форматирования такими как Breite() oder setf(). Их аналоги полностью равны одноименным методам из iostream.

Последовательность вывода переменных так же указывается слева на право: Первой будет выведена переменная, указана ближе всех к fileo, потом следующая за ней.

Оператор endl

Аналогично оператору из iostream производит запись перевода каретки на новую строку в текстовых файлах.

Метод write

Используется в бинарных файлах для записи блока памяти (массива байт) в файл как они есть. Любая переменная так же является массивом Byte, вернее ее так можно рассматривать. Соответственно этот метод запишет в файл ее машинное представление (тот вид как она выглядит в памяти).

Этот метод принимает два параметра: Указатель на блок данных и количество байт, который этот блок занимает. В примере строка занимает strlen() Byte, целое Größe von() (которое даст 4 на 32-х битных операционках для целого и 8 для вещественного).

Еще раз стоит акцентировать, что в отличии от форматированного вывода оператором <<, Verfahren schreiben() не выводит данные в текстовом представлении.

Метод close

Закрывает файл метод schließen(). Для файлов, открытых на запись, в отличии от файлов на чтение, закрытие файлаобязательный ритуал. Незакрытый файл может не получить данные. Происходить такой эффект может из-за буфферизации самой операционки, когда данные, сбрасываемые в файл, хранятся на самом деле в памяти и сразу в файл не поступают. Операционная система сама решает, когда пора данные сливать.

Такойотложенныйслив называетсяКоммитом” (от латинского commit). Кстати этим эффектом весьма удачно пользуются системы управления базами данных, где вставляемые записи попадают в хранилище в памяти (называемой транзакцией). И только после специальной команды скопом пишутся в сам файл базы. Verfahren schließen() как раз пример такой команды закрывающей транзакцию вместе с файлом.

Стоит на всякий случай упомянуть, что если нужно произвести коммит данных без закрытия самого файла, нужно применить метод spülen()

Отложенные на запись данные поступят в файл, но он еще будет открыт для записи. Этот метод не так часто используется, но о нем знать полезно.

Методы форматирования width, Präzision

Как и в iostream, для красивой разметки данных в файле могут применяться методы форматирования данных для вывода оператором << .

Breite() указывает ширину в символах, в которое будет укладываться выводимое значение, und Präzision() количество знаков дробной части вещественного. Простейший пример: вывод таблицей в текстовый файл значений тригонометрической функции:

 

Методы позиционирования seekp, tellp

Для перехода по файлу как и в случае с ifstream существует функция перестановки позиции. Называется она seekp() и получает те же параметры что и описаны выше для seekg().

Для получения текущей позиции в байтах от начала файла используется аналогичная функция tellp().

Videos über die Arbeit mit Dateien in C ++:

Newsletter neue Lektionen über die Programmierung:

Arbeiten mit Dateien in C ++. Teil 2 – Библиотека fstream.
5 (100%) 1 Abstimmung

28 Gedanken zu "Arbeiten mit Dateien in C ++. Teil 2 – Библиотека fstream.

Hinterlasse eine Antwort

Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *