 
        
        
          Добавил:
          
          
        
        
    
            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