// gooooloo 2009.10.19 struct setWidth { int _w; setWidth(int a):_w(a){} }; struct setFactor { double _f; setFactor(double f):_f(f){} }; struct myOstream { std::ostream &_ou; int _w; double _f; myOstream(std::ostream &ou):_ou(ou),_w(0),_f(1){}; myOstream &operator<<(int a) { if (_w>0) _ou.width(_w); _ou << a*_f << ";"; return *this; } myOstream &operator<<(const setWidth &myW) { _w = myW._w; return *this; } myOstream &operator<<(const setFactor &myW) { _f = myW._f; return *this; } }; int main() { using namespace std; int a(3333); int b(333333); myOstream myOu(cout); myOu << setWidth(3) << a << b <<setWidth(5) << a << b << setWidth(7) << a << b << setFactor(3) << a << b << setFactor(0) << a << b << setFactor(-0.4) << a << b ; }