Formatting library(since C++20)

Formatting library(since C++20)

C++

编译器支持

独立式和宿主式

语言

标准库

标准库头文件

具名要求

特性测试宏 (C++20)

语言支持库

概念库 (C++20)

诊断库

内存管理库

元编程库 (C++11)

通用工具库

容器库

迭代器库

范围库 (C++20)

算法库

字符串库

文本处理库

数值库

日期和时间库

输入/输出库

文件系统库 (C++17)

并发支持库 (C++11)

执行控制库 (C++26)

技术规范

符号索引

外部库

[编辑] 文本处理库

本地化库

正则表达式库 (C++11)

Formatting library (C++20)

空终止序列工具

字节字符串

多字节字符串

宽字符串

原始数值转换

to_chars(C++17)

to_chars_result(C++17)

from_chars(C++17)

from_chars_result(C++17)

chars_format(C++17)

文本编码标识

text_encoding(C++26)

[编辑] Formatting library

标准格式规范

格式化函数

format(C++20)

format_to(C++20)

format_to_n(C++20)

formatted_size(C++20)

vformat(C++20)

vformat_to(C++20)

格式字符串

basic_format_stringformat_stringwformat_string(C++20)(C++20)(C++20)

runtime_format(C++26)

格式化概念

formattable(C++23)

Formatter

formatter(C++20)

formatter(C++23)

formatter(C++23)

range_formatter(C++23)

enable_nonlocking_formatter_optimization(C++23)

basic_format_parse_contextformat_parse_contextwformat_parse_context(C++20)(C++20)(C++20)

basic_format_contextformat_contextwformat_context(C++20)(C++20)(C++20)

range_format(C++23)

format_kind(C++23)

格式化参数

basic_format_arg(C++20)

basic_format_arg::handle(C++20)

basic_format_argsformat_argswformat_args(C++20)(C++20)(C++20)

visit_format_arg(C++20) (deprecated in C++26)

make_format_argsmake_wformat_args(C++20)(C++20)

格式错误

format_error(C++20)

[编辑]

文本格式化库提供了一种安全且可扩展的替代方案,以替代 printf 系列函数。它旨在补充现有的 C++ I/O 流库。

目录

1 格式规范

2 格式化函数

3 格式字符串

4 格式化概念

5 可扩展性支持和实现细节

6 辅助项 (since C++23)

7 注解

8 示例

9 缺陷报告

10 参见

[编辑] 格式规范

格式规范指定了如何使用不同类型的选项来格式化对象。

基本类型和标准字符串类型的对象格式化使用基本格式规范。其他库组件也可能提供它们自己的格式规范,详情请参见此处。

[编辑] 格式化函数

定义于头文件

format(C++20)

将参数的格式化表示形式存储在新字符串中 (函数模板) [编辑]

format_to(C++20)

通过输出迭代器写出其参数的格式化表示形式 (函数模板) [编辑]

format_to_n(C++20)

通过输出迭代器写出其参数的格式化表示形式,不超过指定大小 (函数模板) [编辑]

formatted_size(C++20)

确定存储其参数的格式化表示形式所需的字符数 (函数模板) [编辑]

[编辑] 格式字符串

定义于头文件

basic_format_stringformat_stringwformat_string(C++20)(C++20)(C++20)

在构造时执行编译时格式字符串检查的类模板 (类模板) [编辑]

runtime_format(C++26)

创建可直接在面向用户的格式化函数中使用的运行时格式字符串 (函数) [编辑]

[编辑] 格式化概念

定义于头文件

formattable(C++23)

指定类型是可格式化的,即它特化了 std::formatter 并提供成员函数 parse 和 format (概念) [编辑]

[编辑] 可扩展性支持和实现细节

定义于头文件

vformat(C++20)

使用类型擦除参数表示的 std::format 的非模板变体 (函数) [编辑]

vformat_to(C++20)

使用类型擦除参数表示的 std::format_to 的非模板变体 (函数模板) [编辑]

make_format_argsmake_wformat_args(C++20)(C++20)

创建一个类型擦除对象,引用所有格式化参数,可转换为 format_args (函数模板) [编辑]

visit_format_arg(C++20) (deprecated in C++26)

用户定义格式化器的参数访问接口 (函数模板) [编辑]

formatter(C++20)

为给定类型定义格式化规则 (类模板) [编辑]

range_formatter(C++23)

类模板,帮助为范围类型实现 std::formatter 特化 (类模板) [编辑]

enable_nonlocking_formatter_optimization(C++23)

指示参数类型可以高效打印(变量模板)[编辑]

range_format(C++23)

指定应如何格式化范围 (枚举) [编辑]

format_kind(C++23)

为范围选择合适的 std::range_format(变量模板)[编辑]

basic_format_arg(C++20)

类模板,为用户定义的格式化器提供对格式化参数的访问 (类模板) [编辑]

basic_format_argsformat_argswformat_args(C++20)(C++20)(C++20)

提供对所有格式化参数的访问的类 (类模板) [编辑]

basic_format_contextformat_contextwformat_context(C++20)(C++20)(C++20)

格式化状态,包括所有格式化参数和输出迭代器 (类模板) [编辑]

basic_format_parse_contextformat_parse_contextwformat_parse_context(C++20)(C++20)(C++20)

格式化字符串解析器状态 (类模板) [编辑]

format_error(C++20)

在格式化错误时抛出的异常类型 (类) [编辑]

[编辑] 辅助项 (since C++23)

template< class R, class CharT > concept /*const-formattable-range*/ = ranges::input_range &&

std::formattable, CharT>;

(1)

(仅为演示*)

template< class R, class CharT > using /*fmt-maybe-const*/ =

std::conditional_t, const R, R>;

(2)

(仅为演示*)

[编辑] 注解

特性测试 宏

Std

特性

__cpp_lib_format

201907L

(C++20)

文本格式化

202106L

(C++23)(DR20)

编译时格式字符串检查;减少 std::vformat_to 的参数化

202110L

(C++23)(DR20)

修复 chrono 格式化器中的区域设置处理;支持非 const-formattable 类型

202207L

(C++23)(DR20)

公开 std::basic_format_string;阐明 chrono 类型的本地化格式化中的编码处理

202304L

(C++26)

格式化指针

202305L

(C++26)

类型检查格式参数

202306L

(C++26)

成员 std::basic_format_arg::visit

202311L

(C++26)

运行时格式字符串

202403L

(C++26)

使用 std::println 打印空白行

202403L

(C++26)(DR23)

允许 std::print 的高效实现本节尚不完整原因:值应 >= 202406L,即与前一个值不同

__cpp_lib_format_ranges

202207L

(C++23)

格式化范围

__cpp_lib_format_path

202403L

(C++26)

格式化 std::filesystem::path

__cpp_lib_format_uchar

202311L

(C++26)

修复代码单元作为整数的格式化

__cpp_lib_formatters

202302L

(C++23)

格式化 std::thread::id 和 std::stacktrace

我们有意将添加 std::basic_format_string (P2508) 视为缺陷报告,因为所有已知的实现都在 C++20 模式下提供这些组件,尽管官方并未如此分类。

[编辑] 示例

运行此代码

#include

#include

int main()

{

std::string message = std::format("The answer is {}.", 42);

assert(message == "The answer is 42.");

}

[编辑] 缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。

DR

应用于

已发布行为

正确行为

P2418R2

C++20

既非 const-formattable 也非 copyable 的对象(例如类似生成器的对象)不可格式化

允许格式化这些对象(放宽的格式化器要求)

P2508R1

C++20

此设施没有用户可见的名称

名称 basic_format_string 被公开

[编辑] 参见

print(C++23)

使用参数的格式化表示形式打印到 stdout 或文件流 (函数模板) [编辑]

println(C++23)

与 std::print 相同,但每次打印都以额外的换行符结尾 (函数模板) [编辑]

print(std::ostream)(C++23)

输出参数的格式化表示形式 (函数模板) [编辑]

相关推荐

365bet体育在线世界杯 全真教嵛山派打坐姿势与方法详解
365bet足球外围 零基础如何自学拼音? - Type.fun拼音打字平台
365bet体育在线世界杯 [广联达软件]斯维尔三维与广联达算量软件对比