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
(1)
(C++23 起)
template< class... Args >
void println( std::FILE* stream,
std::format_string
(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
2) 等价于执行以下操作:
std::print(stream, "{}\n", std::format(fmt, std::forward
(直到 C++26)
std::print(stream, std::runtime_format(std::string(fmt.get()) + '\n'), std::forward
(C++26 起)
3) 等价于 std::println(stdout)。
4) 等价于 std::print(stream, "\n")。
如果 std::formatter
目录
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、文件流或缓冲区 (函数) [编辑]