Программирование >>  Программирование на языке c++ 

1 ... 107 108 109 [ 110 ] 111 112 113 ... 159


int peekQ; возвращает (но не забирает из потока) значение следующего символа

istream& putback{char); возвращает символ в поток

istream& seekg(streampos pos); перемещает текущий указатель в позицию pos входного потока, отсчитываемую от его начала (от нуля)

istream& seekg(streamoff offset,seek dir dir); перемещает текущий указатель на offset байт относительно начальной позиции dir (начала, текущей позиции или конца), где значения dir определяются элементом перечисления: enum seek dir { beg,cur,end };

streampos teiig(); возвращает значение текущего

указателя потока или отрицательное значение при

ошибке

.....................};

class ostream : public virtual ios {

public:

ostream& f!ush(); сбрасывает (очищает) поток ostream& put(unsigned char); выводит символ ostream& put(char); выводит символ

ostream& put(signed char); выводит символ ostream& seekp{streampos); no аналогии с istream ostream& seekp(streampos,seek dir); no аналогии с

istream

ostream& tellpO; no аналогии с istream

.................... };

Ниже приводятся примеры использования некоторых функций.

int а; cin а;

if (cin.goodO) cout OK: a endl;

else { cerr << an error << endl; exit(1); } cin a;



if (cin.failO) { cerr an error endl; exit(1); }

else cout OK: a endl; cin a;

if (cin.badO) { cerr an error endl; exit(1); }

else cout OK: a endl; if (cin a) cout OK: a endl;

else { cerr << an error << endl; exit(1); }

8.8. Работа с файлами

Работа с файлами подцерживается функциями классов ofstream, ifstream и fstream (см. рис. 8.2). При этом в программу необходимо включить файл fstream.h директивой #include <fstream.h>.

Чтобы открыть файл для записи, необходимо создать объект класса ofstream, например:

ofstream wr( my file.txt );

Чтобы открыть файл для чтения, необходимо создать объект класса ifstream, например:

ifstream rd( my file.txt );

Аргументы, передаваемые в соответствующие конструкторы для классов ofstream и ifstream, задают полное имя файла, т. е. имя и путь к директорию (каталогу), в котором производится работа с файлом.

В действительности классы ofstream и ifstream имеют несколько конструкторов, описания которых можно найти в соответствующих руководствах по программированию. Ранее были выбраны следующие конструкторы:

ofstream (const char name*,int mode=ios::out,

int prot=fileout::openprot); ifstream(const char name*,int mode=ios::in, int prot=fileout::openprot);

Проверка правильности открытия файлов может быть осуществлена проверкой состояний соответствующих объектов (об этом говорилось выше). При необходимости мошю изменить в конструкторах значения вторых аргументов, которые заданы по умолчанию:

class ios {



public:

enum open mode {

app, добавление данных в конец файла

ate, открытие и поиск конца файла

in, открытие файла для чтения

out, открытие файла для записи

binary, открытие файла в двоичном формате

trunc, устанавливает длину файла, равную О

noncreate, если файл не существует, то открытие

не производится noreplace если файл существует, то открытие не производится за исключением режимов арр и ate }

..................... };

Третий параметр конструкторов - это данное с атрибутом public класса filebuf, которое задано в виде: static const int openprot; защита файла при его открытии Цель этого параметра заключается в установке доступа к фа1и1у для чтения и записи.

Разрешается комбинировать несколько признаков в одном значении. Например, можно открыть файл одновременно для чтения и записи:

fstream write read( wr.txt ,ios::in ios::out); Класс fstream является производным от класса iostream, который в свою очередь наследуется (не непосредственно) из классов ifstream и ofstream (см. рис. 8.2). Все операции классов istream и ostream могут быть выполнены для объектов класса fstream.

Файл можно закрыть посредством вызова функции close (она является компонентом класса filebuf). Однако это необходимо делать только тогда, когда файл должен быть закрыт до завершения блока, в котором он был открыт и где он доступен. Если блок завершается, то автоматически вызываются соответствующие деструкторы (т. е. деструкторы класса filebuf), которые закрывают все открытые файлы.

Рассмотрим примеры. Первая программа осуществляет копирование одного файла в другой:



1 ... 107 108 109 [ 110 ] 111 112 113 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика