12

fmtライブラリを使用して浮動小数点数をフォーマットしたいと考えています。

小数点記号「,」を使用して浮動小数点数をフォーマットしようとしましたが、これを試しても成功しませんでした:

#include <iostream>
#include <fmt/format.h>
#include <fmt/locale.h>

struct numpunct : std::numpunct<char> {
  protected:    
    char do_decimal_point() const override
    {
        return ',';
    }
};

int main(void) {
    std::locale loc;
    std::locale l(loc, new numpunct());
    std::cout << fmt::format(l, "{0:f}", 1.234567);
}

出力は1.234567です。をお願いします。1,234567

アップデート:

fmt ライブラリのソースを参照したところ、浮動小数点数用に小数点記号がハードコードされており、現在のロケールを尊重していないと思います。

fmt ライブラリでイシューを開いたところです

4

1 に答える 1