使用自定义区域设置使用ofstream进行打印(或区域设置如何以及为何影响精度)

时间:2017-01-29 00:50:34

标签: c++ io locale iostream

我尝试在某些序列化代码中使用千位分隔符,并且我已选择为我的ofstream使用自定义区域设置。使用cout的最小示例(该示例使用cout代替ofstream,因为我必须在屏幕上显示某些内容)将是以下内容:

#include <iostream>
#include <limits>
#include <locale>

class split_every_three : public std::numpunct<char>
{
protected:
    virtual char do_thousands_sep() const { return '\''; }
    virtual std::string do_grouping() const { return "\03"; }
};

int main()
{
    std::cout.imbue( std::locale( std::locale::classic(), new split_every_three ) );

    std::cout << 1234589 << std::endl;
    std::cout << 12342.424134 << std::endl;
    return 0;
}

输出

  

1&#39; 234&#39; 589

     

12&#39; 342.4

Demo

问题是第二行,即浮点数不会打印所有小数位我该如何解决?(我有什么办法来打破这个?)

0 个答案:

没有答案