我尝试在某些序列化代码中使用千位分隔符,并且我已选择为我的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
问题是第二行,即浮点数不会打印所有小数位。 我该如何解决?(我有什么办法来打破这个?)