std:: println
|
定义于头文件
<print>
|
||
|
template
<
class
...
Args
>
void println ( std:: format_string < Args... > fmt, Args && ... args ) ; |
(1) | (C++23 起) |
|
template
<
class
...
Args
>
void
println
(
std::
FILE
*
stream,
|
(2) | (C++23 起) |
|
void
println
(
)
;
|
(3) | (C++26 起) |
|
void
println
(
std::
FILE
*
stream
)
;
|
(4) | (C++26 起) |
按照格式字符串 fmt 格式化 args 并附加 ' \n ' (这意味着每个输出以换行符结尾),然后将结果打印到流中。
|
std:: print ( stream, "{} \n " , std:: format ( fmt, std:: forward < Args > ( args ) ... ) ) ; |
(C++26 前) |
|
std::
print
(
stream,
std::
runtime_format
(
std::
string
(
fmt.
get
(
)
)
+
'
\n
'
)
,
|
(C++26 起) |
如果对于
Args
中的任意
Ti
,
std::
formatter
<
Ti,
char
>
不满足
BasicFormatter
要求(如
std::make_format_args
所要求),则行为未定义。
目录 |
参数
| stream | - | 用于写入的输出文件流 | ||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
每个替换字段具有以下格式:
1)
不带格式说明的替换字段
2)
带格式说明的替换字段
|
||||||||||||||||||||||||||||||||||||||||||||||
| 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 已被接受为缺陷报告,但 std::runtime_format 仅从 C++26 开始可用。因此,该解决方案无法在 C++23 中应用。
示例
#include <print> int main() { // 每次调用 std::println 都会以换行符结尾 std::println("Please"); // 重载 (1) std::println("enter"); // (1) std::print("pass"); std::print("word"); std::println(); // (3); 自 C++26 起有效;效果等同于 std::print("\n"); }
输出:
Please enter password
参见
|
(C++23)
|
使用参数的
格式化
表示打印到
stdout
或文件流
(函数模板) |
|
(C++23)
|
输出带附加换行符
'
\n
'
的参数
格式化
表示
(函数模板) |
|
(C++20)
|
将参数的格式化表示存储到新字符串中
(函数模板) |
|
(C++11)
|
将格式化输出打印到
stdout
、文件流或缓冲区
(函数) |