
- •Объявление класса. Синтаксически классы в С++ подобны структурам, компонентами которых помимо данных могут являться также и функции. При объявлении классов используется ключевое слово class :
- •#include <iostream.h>
- •Многократная перегрузка операций
- •Шаблоны классов
- •Стандартные потоки ввода-вывода
- •Неформатный ввод-вывод
- •Форматный ввод-вывод
- •Форматирование с помощью манипуляторов
- •Создание собственных манипуляторов
- •Перегрузка операторов ввода-вывода
- •Ошибки потоков ввода-вывода
- •Кроме того, в классе ios имеются перегруженные операции
- •Чтение и запись текстовых файлов
- •Чтение и запись бинарных файлов
- •Произвольный доступ к файлу
- •Строковый ввод-вывод
- •Консольный вывод
- •Лекция 11. Технология программирования. Понятие программного обеспечения. Жизненный цикл программы. Модели жизненного цикла ПО.
74
Отметим, что рациональнее в качестве первого |
аргумента |
указывать абстрактный поток stream, а не cout или |
cin, для |
того, чтобы операторы могли работать с любыми потоками. В качестве примера рассмотрим перегрузку операторов ввода-вывода для класса complex:
#include <iostream.h> class complex{ public:
double re, im;
complex (double r=0, double i=0) { re = r; im = i; };
friend ostream & operator << (ostream &, complex &); friend istream & operator >> (istream &, complex &);
};
ostream & operator << (ostream & stream, complex &x);
{
stream << "Комплексное число= ";
stream << "(" << x.re << "," << x.im << ")" << endl; return stream;
};
istream & operator >> (istream & stream, complex &x);
{
cout << "Введите действительную и мнимую части: "; stream >> x.re >> x.im;
return stream;
};
main(void)
{
complex a; cin >> a; cout << a;
}
Ошибки потоков ввода-вывода
С каждым открытым потоком в С++ связывается перечислимая переменная io_state, определяющая биты состояния потока. Она
объявлена в классе |
ios и может рассматриваться как целая |
|
величина: |
|
|
public: |
|
|
enum io_state{ |
|
|
goodbit = 0x00, |
// если бит не установлен, |
|
|
// то ошибок нет |
|
eofbit |
= 0x01, |
// обнаружен конец файла |
failbit |
= 0x02, |
// сбой в последней операции |
|
// ввода-вывода |
|
badbit |
= 0x04, |
// попытка недопустимой операции |
hardfail = 0x80 // в потоке невосстанавливаемая ошибка |
||
}; |
|
|
В случае установки eofbit игнорируются попытки выполнить |
операции извлечения; бит failbit может быть сброшен и продолжено использование потока; после сброса badbit не всегда можно
74