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</* unspecified */, char>; |
(2) | (自 C++20 起) |
using wformat_context = basic_format_context</* unspecified */, 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; |
||
返回一个 std::basic_format_arg
,其中包含 args
中的第 id
个参数,其中 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++ 标准。
DR | 应用于 | 已发布的行为 | 正确行为 |
---|---|---|---|
LWG 3567 | C++20 | basic_format_context 不支持移动限定迭代器类型 |
修改为移动迭代器 |
LWG 3975 | C++20 | 允许用户对 basic_format_context 进行特殊化 |
禁止 |
LWG 4061 | C++20 | basic_format_context 可以由用户代码构造和赋值 |
修改为不可构造也不可赋值 |