それはあなたが望むフォーマットに依存します。固定小数点の場合、次のようになります。
class FFmt
{
int myWidth;
int myPrecision;
public:
FFmt( int width, int precision )
: myWidth( width )
, myPrecision( precision )
{
}
friend std::ostream& operator<<(
std::ostream& dest,
FFmt const& fmt )
{
dest.setf( std::ios::fixed, std::ios::floatfield );
dest.precision( myPrecision );
dest.width( myWidth );
}
};
あなたが書くことができるように、トリックを行う必要があります:
file << nume << '\t' << FFmt( 8, 2 ) << max ...
(または任意の幅と精度)。
浮動小数点演算を行う場合は、そのようなマニピュレーターをテイクキットに含める必要があります(ただし、多くの場合、フォーマットするデータの論理的な意味にちなんで名付けられた論理マニピュレーターを使用する方が適切です)。たとえば、度、距離など)。
私見ですが、マニピュレータを拡張してフォーマット状態を保存し、完全な式の最後に復元することも価値があります。(私のマニピュレータはすべて、これを処理する基本クラスから派生しています。)