std::vprint_nonunicode, std::vprint_nonunicode_buffered
來自 cppreference.com
| 定義於標頭檔案 <print> |
||
| void vprint_nonunicode( std::FILE* stream, std::string_view fmt, std::format_args args ); |
(1) | (C++23 起) |
| void vprint_nonunicode_buffered ( std::FILE* stream, std::string_view fmt, std::format_args args ); |
(2) | (C++23 起) |
| void vprint_nonunicode_buffered ( std::string_view fmt, std::format_args args ); |
(3) | (C++23 起) |
根據格式字串 fmt 格式化 args,並將結果寫入輸出流。
1) 在持有 stream 上的鎖的同時,將 args 提供的格式化引數的字元表示形式,按照 fmt 中給出的規範格式化後寫入 stream。
如果 stream 不是指向輸出 C 流的有效指標,則行為未定義。
2) 等價於 std::string out = std::vformat(fmt, args);
std::vprint_nonunicode(stream, "{}", std::make_format_args(out));。
std::vprint_nonunicode(stream, "{}", std::make_format_args(out));。
3) 等價於 std::vprint_nonunicode_buffered(stdout, fmt, args)。
|
將字元寫入輸出流後,建立一個 可觀察檢查點。 |
(C++26 起) |
目錄 |
[編輯] 引數
| stream | - | 要寫入的輸出檔案流 | ||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
每個替換欄位具有以下格式:
1) 沒有格式化規範的替換欄位
2) 帶有格式化規範的替換欄位
| ||||||||||||||||||||||||||||||||||||||||||||||
| args | - | 要格式化的引數 | ||||||||||||||||||||||||||||||||||||||||||||||
[編輯] 異常
- 分配失敗時丟擲 std::bad_alloc。
- 如果寫入流失敗,丟擲 std::system_error。
- 傳播使用的 格式化器 丟擲的任何異常,例如 std::format_error。
[編輯] 注意
| 特性測試宏 | 值 | 標準 | 特性 |
|---|---|---|---|
__cpp_lib_print |
202207L |
(C++23) | 格式化輸出 |
202403L |
(C++26) (DR23) |
無緩衝格式化輸出 | |
202406L |
(C++26) (DR23) |
為更多可格式化型別啟用無緩衝格式化輸出 | |
__cpp_lib_format |
202207L |
(C++23) | 公開 std::basic_format_string |
[編輯] 示例
| 本節不完整 原因:無示例 |
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
| 缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
|---|---|---|---|
| P3107R5 | C++23 | 列印操作總是帶緩衝的 | 提供無緩衝的列印操作 |
| P3235R3 | C++23 | 新增的函式名稱 P3107R5 具有誤導性 |
更改了函式名稱 |
[編輯] 另請參閱
| 使用 型別擦除的 引數表示,列印到支援 Unicode 的 stdout 或檔案流 (函式) | |
| 使用型別擦除的引數表示輸出字元資料 (函式) | |
| (C++23) |
使用引數的格式化表示列印到 stdout 或檔案流 (函式模板) |
| (C++20) |
將引數的格式化表示儲存在新字串中 (函式模板) |