{fmt}6.2.0
【注】:非逐词翻译。
API Reference
{fmt}库的API由以下部分组成:
fmt/core.h
: 核心API,提供参数处理功能和格式化函数的轻量级子集。fmt/format.h
: 完整API,提供格式化字符串的编译时检查,迭代器输出,以及自定义类型的格式化。fmt/ranges.h
: 针对范围类型和元组类型的格式化支持。fmt/chrono.h
: 日期和时间的格式化支持。fmt/ostream.h
: 对std::ostream
的支持。fmt/printf.h
:printf
格式化。
该库提供的所有函数和类型,都在名称空间fmt
中,宏具有前缀FMT_
。
Core API
fmt/core.h
定义了核心API,该API提供了参数处理功能和格式化函数的轻量子集。在header-only模式下(仅包含头文件就能使用库),应该包含 fmt/format.h而不是fmt/core.h。
以下函数使用格式字符串语法, 类似于Python的str.format。他们采用format_str和args作为参数。
format_str是一个格式字符串,其中包含文字文本和用括号括起来的替换字段{}
。这些字段将替换为结果字符串中带格式的参数。
args是一个参数列表,表示要格式化的对象。
// 格式化参数并返回一个string
template <typename S, typename... Args, typename Char = char_t<S>>
std::basic_string<Char> fmt::format(const S &format_str, Args&&... args);
//--------------Example---------------:
#include <fmt/core.h>
std::string message = fmt::format("The answer is {}", 42);
template <typename S, typename Char = char_t<S>>
std::basic_string<Char> fmt::vformat(const S &format_str, basic_format_args<buffer_context<type_identity_t<Char>>> args);
// 根据format_str格式化args, 并写入stdout.
// 字符串使用Unicode编码(除非 FMT_UNICODE 宏被设置为0)
template <typename S, typename... Args, typename Char = char_t<S>>
void fmt::print(const S &format_str, Args&&... args);
//--------------Example---------------:
fmt::print("Elapsed time: {0:.2f} seconds", 1.23);
void fmt::buffered_file::vprint(string_view format_str, format_args args);
// 根据format_str格式化args, 并写入文件流f.
// 字符串使用Unicode编码(除非 FMT_UNICODE 宏被设置为0)
template <typename S, typename... Args, typename Char = char_t<S>>
void fmt::print(std::FILE *f, const S &format_str, Args&&... args);
//--------------Example---------------:
fmt::print(stderr, "Don't {}!", "panic");
void fmt::vprint(std::FILE *, string_view, format_args);
Named Arguments(命名参数)
// 返回要在格式化函数中使用的命名参数。仅在格式化函数中使用。(目前不支持编译时检查)
template <typename S, typename T, typename Char = char_t<S>>
internal::named_arg<T, Char> fmt::arg(const S &name, const T &arg)
//--------------Example---------------:
fmt::print("Elapsed time: {s:.2f} seconds", fmt::arg("s", 1.23));
Argument Lists(参数列表)
// 构造一个 format_arg_store 对象,该对象包含对参数的引用,并能隐式地转换为 format_args.
// Context可以省略,使用默认值.
template <typename Context = format_context, typename... Args>
format_arg_store<Context, Args...> fmt::make_format_args(const Args&... args)
// 引用参数地数组. 该数组可以隐式地转换为 basic_format_args, 用来传递给类型擦除的格式化函数, 例如vformat().
template <typename Context, typename... Args>
class fmt::format_arg_store;
// 格式化参数的集合,只能在类型擦除的函数(例如vformat)中作为一种类型.
template <typename Context>
class fmt::basic_format_args;
// public函数:
template <typename... Args>
basic_format_args(const format_arg_store<Context, Args...> &store);
basic_format_args(const dynamic_format_arg_store<Context> &store);
basic_format_args(const format_arg *args, int count);
format_arg get(int index) const; // 返回指定索引处的参数。
// basic_format_args<context> 的别名.
// 继承自 fmt::basic_format_args< format_context >
struct fmt::format_args;
template <typename Context>
class fmt::basic_format_arg;// 不带s
Compatibility(兼容性)
// std::basic_string_view 在C ++ 17之前版本的实现。
// 提供了一个API子集. 当该库的编译选项-std与客户主代码不一致时(不推荐这样做), fmt::basic_string_view 也能被用来格式化字符串.
template <typename Char>
class fmt::basic_string_view;
// public 函数
// 使用c字符串及其大小来构造一个字符串引用对象
basic_string_view(const Char *s, size_t count);
// 使用c字符串及其大小来构造一个字符串引用对象,大小使用std::char_traits<Char>::length计算
basic_string_view(const Char *s);
// 从一个 std::basic_string 来构造一个字符串引用对象
template <typename Traits, typename Alloc>
basic_string_view(const std::basic_string<Char, Traits, Alloc> &s);
// 返回字符串数据的指针
const Char *data() const;
// 返回字符串大小
size_t size() const;
using fmt::string_view = typedef basic_string_view<char>;
using fmt::wstring_view = typedef basic_string_view<