使用c ++进行货币格式化

时间:2011-06-16 14:25:22

标签: c++ formatting currency

有一种明显的方法可以在C ++中执行货币格式化吗?

例如:1978879将成为1'978'879

由于

2 个答案:

答案 0 :(得分:6)

简短回答:

int value = 1978879;
std::cout.imbue(std::locale(""));
std::cout << value << std::endl;

语言环境负责格式化。任何流都可以充满语言环境;默认情况下,它们使用全局语言环境,默认情况下是“C”语言环境,不使用任何数千个分隔符。通过使用空字符串作为参数创建语言环境实例,我们使用用户的语言环境,在您的情况下可能是瑞士语。

您还可以指定显式的区域设置名称,但名称根据您的平台(Linux / Windows)而有所不同,并非所有系统都支持所有区域设置。

如果你想获得一个字符串,最简单的方法可能是使用一个字符串流(来自<sstream>标题):

std::ostringstream stream;
stream.imbue(std::locale(""));
stream << value;
std::string stringValue = stream.str();

虽然您也可以直接使用区域设置的方面,但这更复杂。

您还可以设置所有流将使用的全局区域设置(除非它们具有不同的区域设置):

std::locale::global(std::local(""));

答案 1 :(得分:1)

查看标准C ++本地化库。这不是那么简单,但您可以通过num_get / numpunct方面实现这一目标。