Объектно-ориентированное программирование на языке С++. Ноткин А.М. - 72 стр.

UptoLike

Составители: 

73
char fill();
char fill(char);
Манипуляторы.
Несмотря на гибкость и большие возможности управления формата-
ми с помощью компонентных функций класса ios, их применение доста-
точно громоздко. Более простой способ изменения параметров и флагов
форматирования обеспечивают манипуляторы.
Манипуляторами называются специальные функции, позволяющие
модифицировать работу потока. Особенность манипуляторов состоит в
том, что их можно использовать в качестве правого операнда
операции >>
или <<. В качестве левого операнда, как обычно, используется поток
(ссылка на поток), и именно на этот поток воздействует манипулятор.
Для обеспечения работы с манипуляторами в классах istream и
ostream имеются следующие перегруженные функции operator.
istream& operator>>(istream&(*_f)( istream&));
ostream& operator<<(ostream&(*_f)(ostream&));
При использовании манипуляторов следует включить заголовочный
файл <iomanip.h>, в котором определены встроенные манипуляторы.
Определение пользовательских манипуляторов.
Порядок создания пользовательского манипулятора с параметрами,
например для вывода, следующий:
1. Определить класс (my_manip) с полями: параметры манипулятора,
указатель на функцию типа
ostream& (*f)(ostream&,<параметры манипулятора>);
2. Определить конструктор этого класса (my_manip) с инициализа-
цией полей.
3. Определить, в этом классе дружественную функцию – operator<<.
Эта функция в качестве правого аргумента принимает объект класса
my_manip,
левого аргумента (операнда) поток ostream и возвращает поток
ostream как результат выполнения функции *f. Например,
typedef far ostream&(far *PTF)(ostream&,int,int,char);
class my_man{
int w;int n;char fill;
PTF f;
public:
//конструктор
my_man(PTF F,int W,int N,char FILL):f(F),w(W),n(N),fill(FILL){}
friend ostream& operator<<(ostream&,my_man);
};
ostream& operator<<(ostream& out,my_man my)
{return my.f(out,my.w,my.n,my.fill);}
                                  73
     char fill();
     char fill(char);
      Манипуляторы.
      Несмотря на гибкость и большие возможности управления формата-
ми с помощью компонентных функций класса ios, их применение доста-
точно громоздко. Более простой способ изменения параметров и флагов
форматирования обеспечивают манипуляторы.
      Манипуляторами называются специальные функции, позволяющие
модифицировать работу потока. Особенность манипуляторов состоит в
том, что их можно использовать в качестве правого операнда операции >>
или <<. В качестве левого операнда, как обычно, используется поток
(ссылка на поток), и именно на этот поток воздействует манипулятор.
      Для обеспечения работы с манипуляторами в классах istream и
ostream имеются следующие перегруженные функции operator.
      istream& operator>>(istream&(*_f)( istream&));
      ostream& operator<<(ostream&(*_f)(ostream&));
      При использовании манипуляторов следует включить заголовочный
файл , в котором определены встроенные манипуляторы.
      Определение пользовательских манипуляторов.
      Порядок создания пользовательского манипулятора с параметрами,
например для вывода, следующий:
      1. Определить класс (my_manip) с полями: параметры манипулятора,
указатель на функцию типа
      ostream& (*f)(ostream&,<параметры манипулятора>);
      2. Определить конструктор этого класса (my_manip) с инициализа-
цией полей.
      3. Определить, в этом классе дружественную функцию – operator<<.
Эта функция в качестве правого аргумента принимает объект класса
my_manip, левого аргумента (операнда) поток ostream и возвращает поток
ostream как результат выполнения функции *f. Например,
      typedef far ostream&(far *PTF)(ostream&,int,int,char);
      class my_man{
      int w;int n;char fill;
      PTF f;
      public:
      //конструктор
      my_man(PTF F,int W,int N,char FILL):f(F),w(W),n(N),fill(FILL){}
      friend ostream& operator<<(ostream&,my_man);
      };
      ostream& operator<<(ostream& out,my_man my)
      {return my.f(out,my.w,my.n,my.fill);}