Namespaces
Variants

std:: basic_format_context

From cppreference.net
定义于头文件 <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 >

成员函数

(constructor)
[deleted]
basic_format_context 无法通过用户代码构造
(公开成员函数)
operator=
[deleted]
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 改为不可构造且不可赋值