std::println

std::println

C++

编译器支持

自由(freestanding)与宿主(hosted)

语言

标准库

标准库头文件

具名要求

特性测试宏 (C++20)

语言支持库

概念库 (C++20)

诊断库

内存管理库

元编程库 (C++11)

通用工具库

容器库

迭代器库

范围库 (C++20)

算法库

字符串库

文本处理库

数值库

日期和时间库

输入/输出库

文件系统库 (C++17)

并发支持库 (C++11)

执行控制库 (C++26)

技术规范

符号索引

外部库

[编辑] 输入/输出库

I/O 操纵器

打印函数 (C++23)

C 风格 I/O

缓冲区

basic_streambuf

basic_filebuf

basic_stringbuf

basic_spanbuf(C++23)

strstreambuf(C++98/26*)

basic_syncbuf(C++20)

抽象

ios_base

basic_ios

basic_istream

basic_ostream

basic_iostream

文件 I/O

basic_ifstream

basic_ofstream

basic_fstream

字符串 I/O

basic_istringstream

basic_ostringstream

basic_stringstream

数组 I/O

basic_ispanstream(C++23)

basic_ospanstream(C++23)

basic_spanstream(C++23)

istrstream(C++98/26*)

ostrstream(C++98/26*)

strstream(C++98/26*)

同步输出

basic_osyncstream(C++20)

类型

streamoff

streamsize

fpos

错误类别接口

iostream_category(C++11)

io_errc(C++11)

[编辑] 打印函数

打印函数

print(C++23)

println(C++23)

vprint_unicodevprint_unicode_buffered(C++23)(C++23)

vprint_nonunicodevprint_nonunicode_buffered(C++23)(C++23)

[编辑]

定义于头文件

template< class... Args >

void println( std::format_string fmt, Args&&... args );

(1)

(C++23 起)

template< class... Args >

void println( std::FILE* stream,

std::format_string fmt, Args&&... args );

(2)

(C++23 起)

void println();

(3)

(C++26 起)

void println( std::FILE* stream );

(4)

(C++26 起)

根据格式字符串 fmt 格式化 args 并附加 '\n' (这意味着每个输出都以换行符结束),然后将结果打印到流中。

1) 等价于 std::println(stdout, fmt, std::forward(args)...)。

2) 等价于执行以下操作:

std::print(stream, "{}\n", std::format(fmt, std::forward(args)...));

(直到 C++26)

std::print(stream, std::runtime_format(std::string(fmt.get()) + '\n'), std::forward(args)...)

(C++26 起)

3) 等价于 std::println(stdout)。

4) 等价于 std::print(stream, "\n")。

如果 std::formatter 对于 Args 中的任何 Ti 不满足 BasicFormatter 要求(由 std::make_format_args 要求),则行为未定义。

目录

1 参数

2 异常

3 注意

4 示例

5 另请参阅

[编辑] 参数

stream

-

要写入的输出文件流

fmt

-

[编辑]表示格式化字符串的对象。格式化字符串由以下部分组成:普通字符(除了 { 和 }),它们被原样复制到输出中,转义序列 {{ 和 }},它们在输出中分别被替换为 { 和 },以及替换字段。

每个替换字段具有以下格式:

{ arg-id (可选) }

(1)

{ arg-id (可选) : format-spec }

(2)

1) 没有格式化规范的替换字段

2) 带有格式化规范的替换字段

arg-id

-

指定 args 中用于格式化的参数的索引;如果省略,则按顺序使用参数。格式化字符串中的 arg-id 必须全部存在或全部省略。混合手动和自动索引是错误的。

format-spec

-

由对应参数的 std::formatter 特化定义的格式规范。不能以 } 开头。

对于基本类型和标准字符串类型,格式化规范被解释为标准格式化规范。对于 chrono 类型,格式化规范被解释为chrono 格式化规范。

对于范围类型,格式化规范被解释为范围格式化规范。对于 std::pair 和 std::tuple,格式规范被解释为 元组格式规范。对于 std::thread::id 和 std::stacktrace_entry,请参阅 线程 ID 格式规范 和 堆栈跟踪条目格式规范。对于 std::basic_stacktrace,不允许使用格式化说明符。

(C++23 起)

对于 std::filesystem::path,请参阅路径格式化规范。

(C++26 起)

对于其他可格式化类型,格式化规范由用户定义的 formatter 特化决定。

args...

-

要格式化的参数

[编辑] 异常

分配失败时抛出 std::bad_alloc。 如果写入流失败,抛出 std::system_error。传播由使用的 格式化器 抛出的任何异常,例如 std::format_error。

[编辑] 注意

尽管重载 (3,4) 是在 C++26 中添加的,但所有已知实现都在 C++23 模式下提供了它们。

特性测试宏

标准

特性

__cpp_lib_print

202207L

(C++23)

格式化输出

202403L

(C++26)

无缓冲格式化输出[1]

__cpp_lib_format

202207L

(C++23)

公开 std::basic_format_string

↑ 虽然 P3107R5 被接受为 DR,但 std::runtime_format 仅在 C++26 中可用。因此,该解决方案无法在 C++23 中应用。

[编辑] 示例

运行此代码

#include

int main()

{

// Each call to std::println ends with new-line

std::println("Please"); // overload (1)

std::println("enter"); // (1)

std::print("pass");

std::print("word");

std::println(); // (3); valid since C++26; same effect as std::print("\n");

}

输出

Please

enter

password

[编辑] 参阅

print(C++23)

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

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

输出带附加 '\n' 的参数格式化表示 (函数模板) [编辑]

format(C++20)

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

printffprintfsprintfsnprintf(C++11)

将格式化输出打印到 stdout、文件流或缓冲区 (函数) [编辑]

相关数据

上古卷轴5如何召唤马过来
bat365在线平台用户官网

上古卷轴5如何召唤马过来

⌛ 09-02 👁️‍🗨️ 3718
国内如何注册google账号?(已成功注册教程)
bat365在线平台用户官网

国内如何注册google账号?(已成功注册教程)

⌛ 07-02 👁️‍🗨️ 2575
单反数码相机中“单机”和“套机”是什么区别?
bat365在线平台用户官网

单反数码相机中“单机”和“套机”是什么区别?

⌛ 07-18 👁️‍🗨️ 6514
看门狗2怎么买车-看门狗2买车流程
bat365在线平台用户官网

看门狗2怎么买车-看门狗2买车流程

⌛ 07-24 👁️‍🗨️ 6278
为什么百威啤酒小瓶比大瓶贵?
bat365在线平台用户官网

为什么百威啤酒小瓶比大瓶贵?

⌛ 11-03 👁️‍🗨️ 2072
不看征信和负债的贷款有哪些?急需用钱也能贷!
bat365在线平台用户官网

不看征信和负债的贷款有哪些?急需用钱也能贷!

⌛ 06-28 👁️‍🗨️ 174