在一个相关的问题("https://stackoverflow.com/questions/2342162/stdstring-formatting-like-sprintf")中,我了解了这个可怕的新C++20头//en.cppreference.com/w/cpp/utility/format/format。
然而,似乎没有支持编译器.这是正确的,还是有办法使用它?
我使用的是g++ 9.3和-std=c++2a标志,而库<format>是不被识别的。
#include <format> // fatal error: format: No such file or directory
#include <iostream>
int main(){
std::cout << std::format("Hello {}!", "World");
}g++-9 test.cpp -o test -std=c++2a
发布于 2020-04-26 13:32:32
使用libfmt。<format>头实质上是一个标准化的libfmt (如果我没记错的话,它删除了一些小功能)。
发布于 2021-04-07 15:24:21
debian/ubuntu上有一个libfmt-dev包可用。
我目前使用这个头作为format头的替代:
#include <fmt/core.h>
#include <fmt/ranges.h>
namespace std
{
template<typename... Args>
inline auto format(Args&&... args) -> decltype(fmt::v7::format(std::forward<Args>(args)...))
{
return fmt::v7::format(std::forward<Args>(args)...);
}
}这是实验性的:我不知道std::format和fmt::format到底有什么不同。
生活充满了惊喜
发布于 2022-10-03 01:03:36
在编写本报告时,MSVC和Clang是仅有的两个支持标头的编译器。
https://stackoverflow.com/questions/61441494
复制相似问题