Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
84
Добавлен:
10.12.2013
Размер:
1.18 Кб
Скачать
#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
Соседние файлы в папке Lab_7