Поделиться через


Функции-члены потока выходного файла

Функции-члены потока вывода имеют 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 если условие отсутствует, то ошибки (неустранимая или иным) и пометить конца файла не задан.

eof

Возвращает true в условии конца файла.

clear

Устанавливает состояние внутренней ошибки.Если вызывается с аргументами по умолчанию она удаляет все биты ошибки.

rdstate

Возвращает текущее состояние ошибки.

! перегружен оператор выполнять одну и ту же функцию как ошибка функция.Таким образом, выражение:

if( !cout)...

эквивалентно выражению:

if( cout.fail() )...

void* () оператор перегружен, чтобы быть противоположностью ! оператор; таким образом, выражение:

if( cout)...

равны.

if( !cout.fail() )...

void* () оператор не эквивалентен хорошо поскольку он не проверяет наличие конца файла.

См. также

Ссылки

Потоки вывода