如何在C ++中格式化数字?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C ++中格式化数字?相关的知识,希望对你有一定的参考价值。
我想用#。###。### type在C ++中格式化我的输出。例如:我有一个名为num = 123456789
的int数字现在我想将它格式化为123.456.789
作为我的输出。我怎么能用C ++做到这一点?谢谢你的帮助
例1:输入:
int a = 12345
预期产量:
a = 12.345
例2:输入:
int a = 123456
预期产量:
a = 123.456
例3:输入:
int a = 1234567
预期产量:
a = 1.234.567
答案
您通常通过在打印之前设置正确的区域设置来完成此操作。大多数情况下,“正确”的语言环境不是您(程序员)选择的语言环境,而是用户选择的语言环境。为此,您使用没有名称的区域设置:
#include <iostream>
#include <vector>
int main()
std::cout.imbue(std::locale(""));
std::vector<int> values 123456789, 12345, 123456, 1234567 ;
for (auto v : values)
std::cout << v << "\n";
在我的机器上(配置为英语/美国语言环境),这会产生如下输出:
123,456,789
12,345
123,456
1,234,567
如果您的机器配置为使用.
而不是,
作为千位分隔符的区域设置,那就是您应该得到的。如果您需要确保无论用户的意愿如何都能得到它(请三思,但......),您可以通过明确指定区域设置来实现。例如,如果我使用:std::cout.imbue(std::locale("DE"));
,我得到的输出就像你要求的那样:
123.456.789
12.345
123.456
1.234.567
有关可用语言环境以及要使用的名称的信息,请参阅编译器的文档。
以上是关于如何在C ++中格式化数字?的主要内容,如果未能解决你的问题,请参考以下文章