std::basic_format_context
来自cppreference.com
在标头 <format> 定义 | ||
template< class OutputIt, class CharT > class basic_format_context; | (1) | (C++20 起) |
using format_context = basic_format_context</* 未指明 */, char>; | (2) | (C++20 起) |
using wformat_context = basic_format_context</* 未指明 */, wchar_t>; | (3) | (C++20 起) |
提供到由格式化参数和输出迭代器组成的格式化状态的访问。
2) 未指明的模板实参是某种向 std::string 进行追加的输出迭代器,例如 std::back_insert_iterator<std::string>。鼓励实现使用一种支持向任何连续存储且大小可变的容器进行追加的类型擦除缓冲区类型的迭代器。
3) 未指明的模板实参是某种向 std::wstring 进行追加的输出迭代器。
若 OutputIt
不实现 std::output_iterator<const CharT&>
则行为未定义。
声明 std::basic_format_context
的显式或部分特化的程序非良构,无须诊断。
std::basic_format_context
对象仅能由实现创建。仅允许用户代码通过 std::formatter 特化的 format
函数修改格式化环境。
成员类型
类型 | 定义 |
iterator | OutputIt |
char_type | CharT |
成员别名模版
类型 | 定义 |
formatter_type<T> | std::formatter<T, CharT> |
成员函数
(构造函数) [弃置] | 用户代码不能构造 basic_format_context (公开成员函数) |
operator= [弃置] | basic_format_context 不可赋值 (公开成员函数) |
arg | 返回位于给定索引的参数 (公开成员函数) |
locale | 返回用于本地环境特定格式化的本地环境 (公开成员函数) |
out | 返回指向输出缓冲区的迭代器 (公开成员函数) |
advance_to | 推进输出迭代器到给定位置 (公开成员函数) |
std::basic_format_context::arg
std::basic_format_arg<basic_format_context> arg( std::size_t id ) const; | ||
返回保有 args
中第 id
个元素的 std::basic_format_arg
,其中 args
是传递给格式化函数的形参包或 std::basic_format_args
对象。
若 id
不小于格式化参数的数量,则返回默认构造的 std::basic_format_arg
(保有一个 std::monostate 对象)。
std::basic_format_context::locale
std::locale locale(); | ||
返回传递给格式化函数的本地环境,或若格式化函数不接收本地环境则返回默认构造的 std::locale。
std::basic_format_context::out
iterator out(); | ||
返回指向输出缓冲区的迭代器。从存储的迭代器移动构造其结果。
std::basic_format_context::advance_to
void advance_to( iterator it ); | ||
移动赋值 it
给存储的输出迭代器。调用 advance_to
后,对 out()
的下次调用将返回具有 it
在赋值前的值的迭代器。
示例
本节未完成 原因:暂无示例 |
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 3567 | C++20 | basic_format_context 无法用于仅移动的迭代器类型 | 使之移动迭代器 |
LWG 3975 | C++20 | 允许用户特化 basic_format_context | 已禁止 |
LWG 4061 | C++20 | basic_format_context 曾可由用户代码构造及赋值 | 改为不可构造或赋值 |