Функции-члены потока выходного файла
Функции-члены потока вывода имеют 3 типа: эти, эквивалентны манипуляторам, которые выполняют неформатированное операции записи и те, которые иначе изменяют состояние потока и не имеют каких-либо эквивалентных манипулятора или оператора вставки.Для последовательного, форматированного вывода, можно использовать только операторы и манипуляторов вставки.Для произвольного доступа binary вывода диска, можно использовать другие функций-членов, с или без оператора вставки.
Открытая функция для потоков вывода
Использовать поток выходного файла (ofstream) необходимо связать этот поток с определенным файлом на диске в конструкторе или открытие функция.При использовании открытие функция можно повторно использовать один и тот же объект потока с рядом файлов.В любом случае аргументы, описывающий файл.
При открытии файла, связанный с потоком вывода, обычно указывается open_mode пометить.Можно сочетать эти флаги, которые указываются в виде перечислители в ios класс с побитовое ИЛИ ( | оператор).См. ios_base:: openmode список перечислителей.
3 Общих ситуации потока вывода входят параметры режима:
Создание файла.Если файл уже существует, старая версия удаляется.
ostream ofile( "FILENAME" ); // Default is ios::out ofstream ofile( "FILENAME", ios::out ); // Equivalent to above
Добавление записи в существующий файл или создания нового источника данных, если он не существует.
ofstream ofile( "FILENAME", ios::app );
Открытие файла 2, один раз в одном потоке.
ofstream ofile(); ofile.open( "FILE1", ios::in ); // Do some output ofile.close(); // FILE1 closed ofile.open( "FILE2", ios::in ); // Do some more output ofile.close(); // FILE2 closed // When ofile goes out of scope it is destroyed.
Положенная функция
ПОМЕСТИТЕ функция записывает один символ в поток вывода.Следующие 2 выписки одинаковые по умолчанию, но второй затрагивается аргументами формата потока:
cout.put( 'A' ); // Exactly one character written
cout << 'A'; // Format arguments 'width' and 'fill' apply
Функция записи
запись функция записывает блок памяти к потоку выходного файла.Аргумент длины указывает число записанных байтов.Этот пример создает поток выходного файла и записывает значение binary Date макет к ней.
// write_function.cpp
// compile with: /EHsc
#include <fstream>
using namespace std;
struct Date
{
int mo, da, yr;
};
int main( )
{
Date dt = { 6, 10, 92 };
ofstream tfile( "date.dat" , ios::binary );
tfile.write( (char *) &dt, sizeof dt );
}
запись функция не останавливается, когда он достигает нуль-символ, поэтому структура полного класса записана.Функция принимает 2 аргументов. a char указатель и число знаков для записи.Обратите внимание на необходимое приведение к char * перед использованием адреса объекта макета.
Функции seekp и tellp
Поток выходного файла содержит внутренний указатель, указывающий на позиции, где данные быть написан далее.seekp функция-член устанавливает указатель this и, таким образом, предоставляющий произвольно-доступный выходного файла на диске.tellp функция-член возвращает позицию файла.Примеры, используйте числа входного потока seekp и tellpсм. функции seekg и tellg.
Функция " закрыть " для потоков вывода
закрыть функция-член закрывает дисковый файл, связанный с потоком выходного файла.Файл необходимо закрыть, чтобы завершить все выходные данные диска.При необходимости ofstream деструктор закрывает файл, но можно использовать закрыть функция если нужно открыть другой файл для одного и того же объекта потока.
Деструктор потока вывода автоматически закрывает файл потока, только если конструктор или открытие функция-член открыл файл.Если передается конструктору идентификатор файла уже-открытого или использовании вложение функция-член, необходимо закрыть файл явным образом.
Функции обработки ошибок
С помощью этих функций-членов для тестирования для ошибок при записи в поток.
Функция |
Возвращаемое значение |
---|---|
Возвращает true если неустранимая ошибка. |
|
Возвращает true если неустранимая ошибка или "требуется" состояние, как ошибку преобразования или если файл не найден.Обработка зачастую может продолжить после вызова clear нулевые аргументом. |
|
Возвращает true если условие отсутствует, то ошибки (неустранимая или иным) и пометить конца файла не задан. |
|
Возвращает true в условии конца файла. |
|
Устанавливает состояние внутренней ошибки.Если вызывается с аргументами по умолчанию она удаляет все биты ошибки. |
|
Возвращает текущее состояние ошибки. |
! перегружен оператор выполнять одну и ту же функцию как ошибка функция.Таким образом, выражение:
if( !cout)...
эквивалентно выражению:
if( cout.fail() )...
void* () оператор перегружен, чтобы быть противоположностью ! оператор; таким образом, выражение:
if( cout)...
равны.
if( !cout.fail() )...
void* () оператор не эквивалентен хорошо поскольку он не проверяет наличие конца файла.