ВУЗ:
Составители:
Рубрика:
74
4. Определить функцию типа *f (fmanip), принимающую поток и па-
раметры манипулятора и возвращающую поток. Эта функция собственно
и выполняет форматирование. Например,
ostream& fmanip(ostream& s,int w,int n,char fill)
{s.width(w);
s.flags(ios::fixed);
s.precision(n);
s.fill(fill);
return s;}
5. Определить собственно манипулятор (wp) как функцию, прини-
мающую параметры манипулятора и возвращающую объект my_manip,
поле f которого содержит указатель на функцию fmanip. Например,
my_man wp(int w,int n,char fill)
{return my_man(fmanip,w,n,fill);}
Для создания пользовательских манипуляторов с параметрами мож-
но использовать
макросы, которые содержатся в файле <iomanip.h>:
OMANIP(int)
IMANIP(int)
IOMANIP(int)
Состояние потока.
Каждый поток имеет связанное с ним состояние. Состояния потока
описываются в классе ios в виде перечисления enum.
public:
enum io_state{
goodbit, //нет ошибки 0Х00
eofbit,//конец файла 0Х01
failbit,//последняя операция не выполнилась 0Х02
badbit,//попытка использования недопустимой операции 0Х04
hardfail //фатальная ошибка 0Х08
};
Флаги, определяющие результат последней
операции с объектом ios,
содержатся в переменной state. Получить значение этой переменной можно
с помощью функции int rdstate().
Кроме того, проверить состояние потока можно следующими функ-
циями:
int bad(); 1, если badbit или hardfail
int eof(); 1, если eofbit
int fail(); 1, если failbit, badbit или hardfail
int good(); 1, если goodbit
74 4. Определить функцию типа *f (fmanip), принимающую поток и па- раметры манипулятора и возвращающую поток. Эта функция собственно и выполняет форматирование. Например, ostream& fmanip(ostream& s,int w,int n,char fill) {s.width(w); s.flags(ios::fixed); s.precision(n); s.fill(fill); return s;} 5. Определить собственно манипулятор (wp) как функцию, прини- мающую параметры манипулятора и возвращающую объект my_manip, поле f которого содержит указатель на функцию fmanip. Например, my_man wp(int w,int n,char fill) {return my_man(fmanip,w,n,fill);} Для создания пользовательских манипуляторов с параметрами мож- но использовать макросы, которые содержатся в файле: OMANIP(int) IMANIP(int) IOMANIP(int) Состояние потока. Каждый поток имеет связанное с ним состояние. Состояния потока описываются в классе ios в виде перечисления enum. public: enum io_state{ goodbit, //нет ошибки 0Х00 eofbit,//конец файла 0Х01 failbit,//последняя операция не выполнилась 0Х02 badbit,//попытка использования недопустимой операции 0Х04 hardfail//фатальная ошибка 0Х08 }; Флаги, определяющие результат последней операции с объектом ios, содержатся в переменной state. Получить значение этой переменной можно с помощью функции int rdstate(). Кроме того, проверить состояние потока можно следующими функ- циями: int bad(); 1, если badbit или hardfail int eof(); 1, если eofbit int fail(); 1, если failbit, badbit или hardfail int good(); 1, если goodbit
Страницы
- « первая
- ‹ предыдущая
- …
- 71
- 72
- 73
- 74
- 75
- …
- следующая ›
- последняя »