是否可以使用 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

千位分隔符取决于区域设置,如果您想将其更改为其他内容,只有在那时您才需要“修补”区域设置 类。

根据 fmt API reference:

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;
}