如何在 C++ 中扩展现有类型(例如 float)的格式规范?

And*_*rew 1 c++ c++20 stdformat

我想扩展浮点类型的格式化选项,最好保留一些现有选项。例如,我想type为带有单位的测量添加一个新的说明符,像这样编写std::format({:.5mm}, 0.05f)并使用 打印我的数据precision=5,但也乘以 1000 并以“mm”为前缀。这可能吗?

Nic*_*las 5

float系统内置了基本类型的格式规范;你不能延长它们。

可以将它们包装在用户定义的类型中,您可以应用任何您喜欢的格式。正如注释中所示例的,std::format("{:.5mm}", MyUnit(0.05f)),其中MyUnit是您的类型,它有自己的格式规范。