我想用#。###。###类型的C ++格式化输出。
例如:我有一个称为num = 123456789
的整数
现在,我想将其格式化为123.456.789
作为输出。
如何在C ++中做到这一点?谢谢您的帮助
Ex1: 输入:
int a = 12345
预期输出:
a = 12.345
Ex2: 输入:
int a = 123456
预期输出:
a = 123.456
Ex3: 输入:
int a = 1234567
预期输出:
a = 1.234.567
答案 0 :(得分:3)
通常在打印出来之前,通过设置适当的区域设置来做到这一点。在大多数情况下,“适当的”语言环境不是您(程序员)选择的语言环境,而是用户选择的语言环境。为此,请使用不带名称的语言环境:
#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
请咨询编译器的文档,以获取有关可用语言环境及其名称的信息。