std:: vprint_unicode, std:: vprint_unicode_buffered
|
ヘッダーで定義
<print>
|
||
|
void
vprint_unicode
(
std::
FILE
*
stream,
std:: string_view fmt, std:: format_args args ) ; |
(1) | (C++23以降) |
|
void
vprint_unicode_buffered
(
std::
FILE
*
stream,
std:: string_view fmt, std:: format_args args ) ; |
(2) | (C++23以降) |
|
void
vprint_unicode_buffered
(
std::
string_view
fmt,
std::
format_args
args
)
;
|
(3) | (C++23以降) |
書式文字列 fmt に従って args をフォーマットし、結果を出力ストリームに書き込みます。
- stream をロックします。
- fmt で指定された仕様に従ってフォーマットされた args から生成される文字列表現を out とします。
- out を stream に書き込みます:
-
- stream が ネイティブUnicode API を通じてのみUnicodeを表示可能な端末を参照している場合、 stream をフラッシュし、ネイティブUnicode APIを使用して端末に out を書き込みます。
- それ以外の場合、変更されていない out を stream に書き込みます。
- stream が有効な出力Cストリームへのポインタではない場合。
- out がネイティブUnicode API使用時に無効なUnicode コードユニット を含む場合。
std :: vprint_unicode ( stream, "{}" , std:: make_format_args ( out ) ) ; .
|
出力ストリームに文字を書き込んだ後、 観測可能なチェックポイント を確立します。 |
(C++26以降) |
目次 |
パラメータ
| stream | - | 出力先のファイルストリーム | ||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
各置換フィールドは以下の形式を持つ:
1)
フォーマット指定なしの置換フィールド
2)
フォーマット指定ありの置換フィールド
|
||||||||||||||||||||||||||||||||||||||||||||||
| args | - | フォーマットする引数 | ||||||||||||||||||||||||||||||||||||||||||||||
例外
- std::bad_alloc メモリ確保失敗時。
- std::system_error 、ストリームへの書き込み失敗時。
- 使用された formatters によって送出された例外を伝播。例: std::format_error 。
注記
C++標準は、実装者が out が無効なUnicodeコード単位を含む場合、診断メッセージを生成することを推奨しています。
POSIXでは、端末への書き込みは通常の標準I/O関数を使用して行われるため、端末を他のファイルストリームと異なる扱いにする必要はありません。
Windowsでは、ストリームが端末を参照するのは、
GetConsoleMode
(
_get_osfhandle
(
_fileno
(
stream
)
)
)
が非ゼロを返す場合です(
GetConsoleMode
、
_get_osfhandle
、および
_fileno
のWindowsドキュメントを参照)。WindowsでのネイティブUnicode APIは
WriteConsoleW
です。
ネイティブUnicode APIの呼び出しにトランスコードが必要な場合、無効なコードユニットは
U+FFFD
REPLACEMENT CHARACTERで置換されます(「The Unicode Standard - Core Specification」、
Chapter 3.9
を参照)。
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__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++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 修正後の動作 |
|---|---|---|---|
| LWG 4044 | C++23 |
端末がUnicodeを表示できる場合、
stream が参照する端末では常に ネイティブUnicode APIが使用されていた |
Unicodeを表示するためにネイティブUnicode API
のみを使用できる端末でのみ使用される |
| P3107R5 | C++23 | 出力操作は常にバッファリングされていた | 非バッファリング出力操作を提供する |
| P3235R3 | C++23 |
P3107R5
によって追加された
関数名が誤解を招くものであった |
関数名を変更した |
関連項目
|
stdout
またはファイルストリームに
型消去された
引数表現を使用して出力する
(関数) |
|
|
(C++23)
|
型消去された
引数表現を使用してUnicode対応の出力を実行する
(関数) |
|
(C++23)
|
stdout
またはファイルストリームに引数の
フォーマットされた
表現を使用して出力する
(関数テンプレート) |
|
(C++20)
|
引数のフォーマットされた表現を新しい文字列に格納する
(関数テンプレート) |
外部リンク
| 1. | Unicode |
| 2. | The Unicode Standard Version 14.0 - Core Specification |