命名空间
变体
操作

std::basic_format_context

来自 cppreference.cn
< cpp‎ | utility‎ | format
 
 
 
 
定义于头文件 <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;

返回一个 `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++ 标准。

缺陷报告 应用于 发布时的行为 正确的行为
LWG 3567 C++20 basic_format_context 不支持仅移动迭代器类型 更改为支持移动迭代器
LWG 3975 C++20 曾允许用户特化 basic_format_context 已禁用
LWG 4061 C++20 basic_format_context 曾可由用户代码构造和赋值 更改为既不可构造也不可赋值