我知道c++ 20格式建议是libfmt各个部分的形式化,而libfmt是该形式化的兼容实现。但是,据我了解,libfmt提供了c++ 20标准中指定的功能以外的其他功能。有哪些其他功能?
另外,主要的编译器供应商是否只是包含一部分libfmt或对其进行重新实现?

最佳答案

libfmt中有一堆不是C++ 20格式的东西:

  • fmt::print()直接打印到stdout。这是在P2093中提出的。 fmt::printf()也存在,但在该论文中未提出。
  • fmt::memory_buffer基本上是一个动态大小的容器,您可以通过fmt::format_to(buf, ...)对其进行格式化。
  • 支持格式化ranges and tuples,包括fmt::join()
  • named arguments的支持,例如fmt::print("Elapsed time: {s:.2f} seconds", "s"_a=1.23);
  • 通过 FMT_COMPILE 编译时格式字符串
  • 关于c++ - libfmt和std::format有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63586747/

    10-10 13:19