跳到主要内容

C++ 命名要求: Formatter (C++20 起)

Formatter 是一种抽象了给定格式化参数类型和字符类型的格式化操作的类型。标准库提供的 std::formatter 特化要求满足 Formatter 的要求,除非另有说明。

Formatter 能够格式化 const 和非 const 参数,通常通过提供一个接受 const 引用的格式化成员函数。

要求

如果一个类型满足 BasicFormatter,并且给定以下条件,则它满足 Formatter

  • Arg,一种格式化参数类型
  • CharT,一个字符类型
  • Formatter,用于类型 ArgCharTFormatter 类型
  • OutputIt,一种 LegacyOutputIterator 类型
  • f,一个(可能是 const)Formatter 类型的值
  • g,一个 Formatter 类型的值
  • arg,一个 Arg 类型的左值
  • t,一个可转换为(可能是 const)Arg 类型的值
  • ParseContextstd::basic_format_parse_context<CharT> 的别名
  • FormatContextstd::basic_format_context<OutputIt, CharT> 的别名
  • parse_ctx,一个 ParseContext 类型的左值
  • format_ctx,一个 FormatContext 类型的左值
表达式返回类型语义
f.format(t, format_ctx)FormatContext::iterator* 根据存储在 f 中的说明符格式化 t,将输出写入 format_ctx.out() 并返回输出范围的结束迭代器。
* 输出仅依赖于
  * t
  * format_ctx.locale()
  * 上次调用 f.parse(parse_ctx) 的范围 [parse_ctx.begin(), parse_ctx.end()),以及
   f.parse(parse_ctx),以及
  * 对于任何 std::size_t 类型的值 nformat_ctx.arg(n)
f.format(arg, format_ctx)FormatContext::iterator如上,但不修改 arg

C++ 命名要求: Formatter (C++20 起)

Formatter 是一种抽象了给定格式化参数类型和字符类型的格式化操作的类型。标准库提供的 std::formatter 特化要求满足 Formatter 的要求,除非另有说明。

Formatter 能够格式化 const 和非 const 参数,通常通过提供一个接受 const 引用的格式化成员函数。

要求

如果一个类型满足 BasicFormatter,并且给定以下条件,则它满足 Formatter

  • Arg,一种格式化参数类型
  • CharT,一个字符类型
  • Formatter,用于类型 ArgCharTFormatter 类型
  • OutputIt,一种 LegacyOutputIterator 类型
  • f,一个(可能是 const)Formatter 类型的值
  • g,一个 Formatter 类型的值
  • arg,一个 Arg 类型的左值
  • t,一个可转换为(可能是 const)Arg 类型的值
  • ParseContextstd::basic_format_parse_context<CharT> 的别名
  • FormatContextstd::basic_format_context<OutputIt, CharT> 的别名
  • parse_ctx,一个 ParseContext 类型的左值
  • format_ctx,一个 FormatContext 类型的左值
表达式返回类型语义
f.format(t, format_ctx)FormatContext::iterator* 根据存储在 f 中的说明符格式化 t,将输出写入 format_ctx.out() 并返回输出范围的结束迭代器。
* 输出仅依赖于
  * t
  * format_ctx.locale()
  * 上次调用 f.parse(parse_ctx) 的范围 [parse_ctx.begin(), parse_ctx.end()),以及
   f.parse(parse_ctx),以及
  * 对于任何 std::size_t 类型的值 nformat_ctx.arg(n)
f.format(arg, format_ctx)FormatContext::iterator如上,但不修改 arg