Добавил:
bagiwow
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование / си++ / 2Semestr / Lab_7 / Manip
.h#ifndef MANIP
#define MANIP
typedef far ostream&(far *point)(ostream&, int n, char c,int m);//тип-указатель на функцию манипулятора, параметрами функции являются int n - максимальная ширина поля вывода и char c - символ-заполнитель
class mnp
{
int w;//ширина
char fill;// заполнитель
int prec;
point f;//функция, которая устанавливает ширину и заполнитель
public:
mnp( point F, int W, char FILL,int PREC){w=W; fill=FILL;prec=PREC; f=F;}//конструктор манипулятора
friend ostream& operator<<(ostream&, mnp);//перегруженная функция-операция для вывода в //поток
};
ostream& operator<<(ostream& out, mnp x)
{
return x.f(out, x.w, x.fill, x.prec );//возвращает поток как результат выполнения функции манипулятора
}
ostream& func(ostream& out, int w, char fill, int prec)
{
//функция, которая выполняет форматирование
out.width(w);//ширина
out.precision(prec);//выравнивание
out.fill(fill);//заполнитель
out.flags(ios::left);
return out;
}
mnp mm(int w, char fill,int prec=2)//функция, которая выполняет форматирование
//принимает параметры манипулятора и возвращает объект класса mnp
{
return mnp ( func, w, fill ,prec);
}
#endif