我想使用 fmt 库从我的格式参数创建一个 string_view。有大量关于将编译时字符串作为格式字符串传递的文档,但是,我想输出 编译时字符串,以便我可以在代码的其他静态部分中使用它。有没有办法做到这一点?到目前为止,我看到的所有函数都返回一个 std::string
;我还尝试了 format_to
,但它似乎被 string_view 迭代器明确禁用(我假设它无论如何都不会在编译时工作,因为它正在变异)。这可能很简单,我只是找错了地方,我不知道。
我希望能够做类似于以下的事情:
consteval std::string_view example(unsigned i){
return fmt::something<std::string_view>("You sent {}"sv, i);
}
到目前为止,this图书馆似乎提供了我需要的东西,但是,避免第二次依赖会是有利的。
最佳答案
您可以使用格式字符串编译(FMT_COMPILE
)来做到这一点:
#include <fmt/compile.h>
consteval auto example(unsigned i) -> std::array<char, 16> {
auto result = std::array<char, 16>();
fmt::format_to(result.data(), FMT_COMPILE("You sent {}"), i);
return result;
}
constexpr auto result = example(42);
这给出了一个数组而不是一个 string_view
但你可以从另一个开始。
关于c++ - fmt 库 - 格式化为(编译时)string_view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71222176/