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

标签 c++ formatting currency

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

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

谢谢

最佳答案

简答:

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

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

您也可以指定一个显式的语言环境名称,但名称会根据您的平台(Linux/Windows)而有所不同,并且并非所有系统都支持所有语言环境。

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

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

虽然你也可以直接使用locale的facet,但是这样比较复杂。

您还可以设置全局语言环境,所有流都将使用它(除非它们专门注入(inject)了不同的语言环境):

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

关于c++ - 使用 C++ 进行货币格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6373513/

相关文章:

c++ - 数据容器C++设计

c++ - 警告 : flag '0' results in undefined behavior with 's' conversion specifier

web-services - 对于不受支持的国家/地区, Paypal 有哪些替代方案?

javascript - Dart 包装 js 库并在 flutter 应用程序中使用它

c++ - << 模板类对象的运算符重载

c++ - constexpr 构造函数不会显示覆盖率数据

highcharts - Highchart 坐标轴保留 2 位小数

python - 将自定义函数输出添加到 Python 日志记录处理程序

python - 在 Python3 中打印格式化的浮点列表

asp-classic - 如何根据区域设置 ID 转换货币