命名空间
变体
操作

std::basic_format_context

来自 cppreference.com
< cpp‎ | utility‎ | format
 
 
实用程序库
语言支持
类型支持 (基本类型、RTTI)
库功能测试宏 (C++20)
动态内存管理
程序实用程序
协程支持 (C++20)
可变参数函数
调试支持
(C++26)
三路比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用实用程序
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中已弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
通用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
基本字符串转换
(C++17)
(C++17)

 
 
定义在头文件 <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 可以由用户代码构造和赋值 修改为不可构造也不可赋值