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

pas*_*sta 2 c++ formatting currency

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

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

谢谢

Sve*_*ven 6

简短回答:

int value = 1978879;
std::cout.imbue(std::locale(""));
std::cout << value << std::endl;
Run Code Online (Sandbox Code Playgroud)

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

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

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

std::ostringstream stream;
stream.imbue(std::locale(""));
stream << value;
std::string stringValue = stream.str();
Run Code Online (Sandbox Code Playgroud)

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

您还可以设置全局区域设置,将由所有流使用(除非它们特别充满了不同的区域设置):

std::locale::global(std::local(""));
Run Code Online (Sandbox Code Playgroud)

  • 设置区域设置后,您可以使用“cout &lt;&lt; put_money( value )”来确保使用正确的货币格式。这确实假设“价值”以货币的最小单位给出,例如美分或拉彭,因此您可能需要将“价值”乘以 100。 (2认同)