Тоже хорошая вещь. Мы можем не просто устанавливать стандартное действие, но и управлять поведением манипулятора передавая параметры. Смотрим.
#include "stdafx.h" #include "iostream.h" #include "strstrea.h" #include "iomanip.h" ostream& hello( ostream& os, int count ) { os << "Hello "; for (int x=0;x<count;x++) os << endl; return os; } OMANIP (int) hello(int count ) { return OMANIP (int) (hello,count); } void main() { int i=255; cout << hello(3) << hex << i << endl; cout << dec << i << endl; cout << hello(5) << oct << i << endl; }
В результате в зависимости от переданного параметра будет произведен перевод строки.
Тут все сложнее. Нам пришлось использовать макрос OMANIP для создания манипулятора с парамeтром.