Namespaces
Variants

std:: formatter < range >

From cppreference.net
定义于头文件 <format>
template < ranges:: input_range R, class CharT >

requires ( std:: format_kind < R > ! = std :: range_format :: disabled ) &&
std:: formattable < ranges:: range_reference_t < R > , CharT >

struct formatter < R, CharT > ;
(C++23 起)
辅助模板
template < std:: range_format K, ranges:: input_range R, class CharT >
struct /*range-default-formatter*/ ;
( 仅用于阐释* )

针对范围类型的 std::formatter 模板特化允许用户通过 格式化函数 将范围转换为元素集合或字符串的文本表示形式。

该特化派生自 range-default-formatter < std:: format_kind < R > , R, CharT >

该特化在满足以下条件时启用: R 满足 input_range std:: format_kind < R > 不是 std :: range_format :: disabled ,且 std:: formattable < ranges:: range_reference_t < R > , CharT > true

const R 满足 Formatter 要求时,若 const R 实现 input_range ranges:: range_reference_t < const R > 实现 std:: formattable < CharT > ,则该特化满足格式化器要求。它始终满足 BasicFormatter 要求。

目录

格式规范

range-format-spec 的语法为:

范围填充与对齐  (可选) 宽度  (可选) n (可选) 范围类型  (可选) 范围底层规范  (可选)

语法完整描述请参阅 范围格式规范

对于 std::formatter 的特化,当 std:: format_kind < R > std :: range_format :: string std :: range_format :: debug_string 时, format-spec 应为 std-format-spec 而非 range-format-spec (此时使用 std:: formatter < std:: basic_string < CharT > , CharT > 作为底层格式化器)。

range-default-formatter 的特化

序列形式范围的格式化工具
(类模板特化)
映射形式范围的格式化工具
(类模板特化)
集合形式范围的格式化工具
(类模板特化)
字符串或转义字符串形式范围的格式化工具
(类模板特化)

示例

参见

(C++20)
为给定类型定义格式化规则
(类模板)
辅助实现范围类型的 std::formatter 特化的类模板
(类模板)