Karma 生成機能を使用して、sprintf のような機能で double を char に変換し始めています。そのために、次の例を使用しています。
template <typename T>
class double3_policy : public boost::spirit::karma::real_policies<T>
{
public:
template <typename T>
static unsigned int precision(T)
{
return 3;
}
};
typedef boost::spirit::karma::real_generator<double, double3_policy<double> > double3_type;
double3_type const double3 ;
using boost::spirit::karma::left_align;
using boost::spirit::karma::generate;
char *p = buffer;
generate(p, '[' << left_align(14)[double3] << left_align(14)[double3] << ']', 12345.000, 22/7.0);
*p = '\0';
この例は正常に動作しますが、精度メソッドは静的であり、その値を動的に設定する方法がわかりませんでした。使用ごとに精度を指定し、実行時に変更したいと考えています。定義された数の精度が必要なので、最初にすべてのジェネレーターを作成してもかまいません。
問題は、それらの唯一の違いが返される数値である場合、各精度数値のクラスを作成する必要があるとは思わないことです。メンバー メソッドを使用してクラスをコンパイルしようとしました (これが私にとって十分なメンバー精度メソッドである場合)。このクラス メソッドの問題で立ち往生していると思います。
精度の異なるジェネレーター オブジェクトを作成し、複数のクラスを作成せずにそれらを使用するにはどうすればよいですか? ジェネレーターを 1 つだけ使用できる場合は、プロパティを変更するだけでさらに良くなります。
誰かが同じ問題を抱えていて、解決策を共有できる場合は非常に役立ちます.
ありがとう、