如何在C++中格式化数字

How To Format Number In C++?

本文关键字:格式化 数字 C++      更新时间:2023-10-16

我想在 #.###.### 类型中格式化C++输出。例如:我有一个整数,叫做num = 123456789现在我想将其格式化为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

有关可用区域设置以及要用于它们的名称的信息,请参阅编译器的文档。