是否可以使用 fmt 以千位分隔符格式化数字?
Is it possible to format number with thousands separator using fmt?
是否可以使用 fmt 格式化带有千位分隔符的数字?
例如像这样:
int count = 10000;
fmt::print("{:10}\n", count);
更新
我正在研究 fmt,因此我正在寻找仅适用于 fmt 库的解决方案,无需以任何方式修改语言环境。
我在俄罗斯论坛网上找到了答案:
int count = 10000;
fmt::print("{:10L}\n", count);
这会打印:
10,000
千位分隔符取决于区域设置,如果您想将其更改为其他内容,只有在那时您才需要“修补”区域设置 类。
Use the 'L' format specifier to insert the appropriate number separator characters from the locale.
Note that all formatting is locale-independent by default.
#include <fmt/core.h>
#include <locale>
int main() {
std::locale::global(std::locale("es_CO.UTF-8"));
auto s = fmt::format("{:L}", 1'000'000); // s == "1.000.000"
fmt::print("{}\n", s); // "1.000.000"
return 0;
}
是否可以使用 fmt 格式化带有千位分隔符的数字?
例如像这样:
int count = 10000;
fmt::print("{:10}\n", count);
更新
我正在研究 fmt,因此我正在寻找仅适用于 fmt 库的解决方案,无需以任何方式修改语言环境。
我在俄罗斯论坛网上找到了答案:
int count = 10000;
fmt::print("{:10L}\n", count);
这会打印:
10,000
千位分隔符取决于区域设置,如果您想将其更改为其他内容,只有在那时您才需要“修补”区域设置 类。
Use the 'L' format specifier to insert the appropriate number separator characters from the locale. Note that all formatting is locale-independent by default.
#include <fmt/core.h>
#include <locale>
int main() {
std::locale::global(std::locale("es_CO.UTF-8"));
auto s = fmt::format("{:L}", 1'000'000); // s == "1.000.000"
fmt::print("{}\n", s); // "1.000.000"
return 0;
}