ある意味iostreamメチャ便利ですが

自作クラスFooに対して
 std::ostream& operator<<(std::ostream& stream, const Foo& obj)
を定義するだけで、どんなクラスも統一的にダンプできてマニピュレータも効く
(上記関数内で複数要素をstream <<するとき、setw()系マニピュレータの効きを正しくするには一工夫要るが

さらにその際ストリームに出力するフォーマットをうまく考えておけばシリアライザも兼用できる
つまり
 std::istream& operator>>(std::istream& stream, Foo& obj)
を定義してデシリアライズすると良い