std::vprint_unicode(std::ostream)
来自cppreference.com
< cpp | io | basic ostream
在标头 <ostream> 定义
|
||
void vprint_unicode( std::ostream& os, std::string_view fmt, std::format_args args ); |
(C++23 起) | |
表现为有格式输出函数 (FormattedOutputFunction) (除了错误报告的一些细节有所不同):
- 首先,构造并检查 sentry 对象。
- 然后,如同以 std::string out = std::vformat(os.getloc(), fmt, args); 初始化一个自动变量。
- 最后,将字符序列
[out.begin(), out.end())
插入到 os,就是说,如果 os 指代有 Unicode 显示能力的终端,则使用原生 Unicode API 向此终端写入 out。否则,向 os 写入未修改的 out。
参数
os | - | 要插入数据的输出流 | ||||||||||||||||||||||||||||||||||||||||||||||
fmt | - |
每个替换域拥有如下格式:
1) 没有格式说明的替换域
2) 有格式说明的替换域
| ||||||||||||||||||||||||||||||||||||||||||||||
args | - | 要格式化的实参 |
返回值
(无)
异常
- 内存分配失败时抛出 std::bad_alloc。
- 传播由其所使用的格式化器所抛出的任何异常,比如 std::format_error,不管 os.exceptions() 的值如何,也不会在 os 的错误状态中打开 ios_base::badbit。
- 可能会抛出由 os.setstate(ios_base::badbit) 所造成的ios_base::failure,它是当向 os 的插入失败时调用的。
注解
如果调用原生 Unicode API 需要进行转码,则无效代码单元均被替换为 U+FFFD
REPLACEMENT CHARACTER(参见《Unicode 标准,版本 14.0 - 核心规范》,章节 3.9)。
功能特性测试宏 | 值 | 标准 | 功能特性 |
---|---|---|---|
__cpp_lib_print |
202207L | (C++23) | 格式化输出 |
__cpp_lib_format |
202207L | (C++23) | 暴露 std::basic_format_string |
示例
本节未完成 原因:暂无示例 |
参阅
使用类型擦除输出各实参的格式化表示 (函数) | |
(C++23) |
输出各实参的格式化表示 (函数模板) |
插入字符数据,或向右值流插入 (函数) | |
使用类型擦除的参数表示,打印到支持Unicode的 stdout 或文件流 (函数) | |
(C++20) |
在新字符串中存储参数的格式化表示 (函数模板) |
外部链接
1. | Unicode |
2. | Unicode 标准,版本 14.0 - 核心规范 |