gpt4 book ai didi

c - 如何在 C/C++ 中格式化带有千位分隔符的数字

转载 作者:行者123 更新时间:2023-12-03 13:48:32 24 4
gpt4 key购买 nike

我正在尝试完成这个简单的任务。只是使用 C 或 C++ 格式化数字,但在 Windows CE 编程下。

在这种环境中,inbue 和 setlocale 方法都不起作用。

最后我这样做没有成功:

char szValue[10];
sprintf(szValue, "%'8d", iValue);

任何的想法?

最佳答案

这是一种方法 - 创建自定义语言环境并为其注入(inject)适当的自定义方面:

#include <locale>
#include <iostream>
#include <memory>

struct separate_thousands : std::numpunct<char> {
char_type do_thousands_sep() const override { return ','; } // separate with commas
string_type do_grouping() const override { return "\3"; } // groups of 3 digit
};

int main()
{
int number = 123'456'789;
std::cout << "default locale: " << number << '\n';
auto thousands = std::make_unique<separate_thousands>();
std::cout.imbue(std::locale(std::cout.getloc(), thousands.release()));
std::cout << "locale with modified thousands: " << number << '\n';
}

预期输出:
default locale: 123456789
locale with modified thousands: 123,456,789

关于c - 如何在 C/C++ 中格式化带有千位分隔符的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43482488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com