Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP / lectures / 4_oop.ppt
Скачиваний:
85
Добавлен:
03.03.2016
Размер:
726.53 Кб
Скачать

Метод int ios::rdstate() возвращает текущее состояние потока.

Пример использования метода rdstate():

int k=cin.rdstate();

if(k & ios::eofbit) cout<<"Достигнут конец файла"<<endl;

Метод int ios::clear(int = 0) без параметров

(вызов по умолчанию) сбрасывает флаги ошибки: например, cin.clear().

Метод int ios::clear(int) позволяет установить заданный флаг: например, cin.clear(failbit).

Метод ios::operator!() возвращает ненулевое значение, если установлен хотя бы один бит ошибки.

Пример. Проверка состояний ошибок потока

#include <iostream> using namespace std; int main() {

int x; cout<<cin.rdstate()<<endl;

cout<<cin.eof()<<endl; cout<<cin.fail()<<endl; cout<<cin.bad()<<endl; cout<<cin.good()<<endl;

cin>>x; cout<<cin.rdstate()<<endl; cout<<cin.eof()<<endl; cout<<cin.fail()<<endl; cout<<cin.bad()<<endl; cout<<cin.good()<<endl;

cout<<!cin<<endl;

cin.clear(); cout<<cin.fail()<<endl; cout<<cin.good()<<endl;

cout<<!cin<<endl; return 0; }

Потоковый файл последовательного

доступа

Пример. Занесение данных о студенте, его группе и среднем балле в текстовый файл.

#include <iostream>

#include <fstream> using namespace std; int main() {

ofstream outGroupFile("student.dat",ios::out);

if(!outGroupFile) {

cerr<<"File not open"<<endl; return 0;

}

double AverMark; cout<<"?: ";

while(cin>>name>>group>>AverMark) outGroupFile<<name<<' ' <<group<<'

'<<AverMark<<'\n';

outGroupFile.close(); return 0;

}`

Замечание. Открыть файл в программе можно с помощью метода open, имеющего такие же параметры как и конструктор. Например, ofstream outGroupFile; outGroupFile.open("student.dat",ios::out);

Режимы открытия файлов

Режим

Описание

ios::app

Записать данные в конец файла без

 

модификации имеющихся данных в

 

файле.

ios::ate

Переместиться в конец исходного

 

открытого файла. Данные могут быть

 

записаны в любое место файла.

ios::in

Открыть файл для ввода.

ios::out

Открыть файл для вывода.

ios::trun

Уничтожать содержимое файла, если

c

он существует.

ios::bin

Открыть файл для двоичного ввода

ary

или вывода.

Пример. Чтение данных из файла последовательного доступа и вывод их на экран.

#include <iostream>

#include <iomanip>

#include <fstream> using namespace std;

void OutputLine(const char* name, const char *group, double mark) {

cout<<setiosflags(ios::left)<<setw(20)<<name<<se

tw(10)<<group<<setw(8)<<setprecision(2)<<reseti

osflags(ios::left)<<mark<<'\n';

}

int main() {

ifstream inGroupFile; inGroupFile.open("student.dat",ios::in); if(!inGroupFile) {

cerr<<"File not open"<<endl; return 0;

}

char name[30],group[10]; double AverMark;

cout<<setiosflags(ios::left)<<setw(20)<<"Фамилия

"<<setw(10)<<"Группа"<<"Ср.

оценка\n"<<setiosflags(ios::fixed|ios::showpoint);

while(inGroupFile>>name>>group>>AverMark)

OutputLine(name,group,AverMark); inGroupFile.close();

return 0;

}

Соседние файлы в папке lectures