Функции-члены потока выходного файла
Функции-члены потока вывода имеют 3 типа: элементы, соответствующие в манипуляторам, те, которые выполняют операции unformatted записи, и те, которые иначе изменяют состояние потока и не имеют каких-либо соответствующих манипулятора или оператора вставки. Для последовательного форматированного вывода, можно использовать только операторы и манипуляторов вставки. Для произвольного доступа бинарного вывода диска следует использовать другие функций-членов, как со строкой операторов вставки.
Открытая функцию для вывода потоков
Для использования потока выходного файла (ofstream), необходимо связать этот поток с определенным дисковым файлом в конструкторе или функции open. При использовании функции open, можно использовать объект того же самого потока с серией файлов. В любом случае аргументы, файл одинаково.
При открытии файла, связанный с потоком вывода, обычно определяется флажок 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
Функция записи
Функция запись создает блок памяти в поток выходного файла. Аргумент длины определяет записанное число байтов. В этом примере создается поток выходного файла и записывает бинарное значение структуры 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 указатель char и число символов, которые требуется записать. Обратите внимание на необходимое приведение к char* перед адрес объекта структуры.
Функции seekp и tellp
Поток выходного файла (внутренний указатель, указывающий на позиции, в которой данные записать далее. Функция-член seekp устанавливает этот указатель и таким образом предоставляет произвольно-доступный вывод дискового файла. Функция-член tellp возвращает позицию файла. Примеры используют эквиваленты входного потока в seekp и tellp см. в разделе Функции seekg и tellg.
Близкая функцию для вывода потоков
Функцию-член закрыть закрывает дисковый файл, связанный с потоком выходного файла. Файл необходимо закрыть для выполнения весь вывод диска. При необходимости деструктор ofstream закрывает файл автоматически, но можно использовать функцию закрыть, если необходимо открыть другой файл для объекта того же самого потока.
Деструктор потока вывода автоматически закрывает файл потока, только если конструктор или функцию-член open открытого файла. При передаче конструктором идентификатор файла для файла или выполнить открытого используется функции-члена attach, необходимо закрыть файл явно.
Функции обработки ошибок
Использование этих функций-членов для выполнения для ошибок во время записи в поток.
Функция |
Возвращаемое значение |
---|---|
Возвращает значение true, если произошла неустранимая ошибка. |
|
Возвращает значение true, если произошла неустранимая ошибка или «требуется» состояние, например ошибку преобразования, или если файл не найден. Обработка часто может возобновить после вызова метода очистить с нулевым аргументом. |
|
Возвращает значение true, если значение условия ошибки (неустранимая или иным) и флажок элемент — файла не задан. |
|
Возвращает true по условию элемент — файла. |
|
Задает состояние внутренней ошибки. Если вызывается с аргументами по умолчанию, он удаляет все биты ошибки. |
|
Возвращает текущее состояние ошибки. |
Оператор ! перегружен, чтобы выполнить ту же функцию, что и функция Не пройдено. Таким образом, выражение:
if( !cout)...
эквивалентно выражению:
if( cout.fail() )...
Оператор void*() перегружен, чтобы быть противоположностью оператора !; таким образом, выражение:
if( cout)...
равен:
if( !cout.fail() )...
Оператор void*() не эквивалентно good, поскольку он не выполняет для конца файла.