Boost.Formatでマニピュレータを使う

boost::formatを使っててdoubleの桁数が足りないなと思うことがあって(緯度・経度を保存しておくとかで)、stringstreamでstd::setprecisionを使ってたりしたのですが、どうやらboost::formatでもマニピュレータを使えるようです。


boost::io::groupを使って、マニピュレータと値を組み合わせて指定します。

#include <iostream>
#include <iomanip>
#include <boost/format.hpp>
#include <boost/math/constants/constants.hpp>

int main()
{
    std::cout <<
        boost::format("%1%")
            % boost::io::group(std::setprecision(8), boost::math::constants::pi<double>())
    << std::endl;
}
3.1415927


【参照】
Manipulators, and internal stream state