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</* 未指明 */, 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 曾可由用户代码构造及赋值 改为不可构造或赋值