繁体   English   中英

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

[英]How To Format Number In C++?

我想用#。###。###类型的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

请查阅编译器的文档,以获取有关可用语言环境以及用于它们的名称的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM