std:: vprint_unicode (std::ostream)
|
定義済みヘッダー
<ostream>
|
||
|
void
vprint_unicode
(
std::
ostream
&
os,
std:: string_view fmt, std:: format_args args ) ; |
(C++23以降) | |
書式文字列 fmt に従って args をフォーマットし、結果を出力ストリーム os に書き込みます。 FormattedOutputFunction として振る舞いますが、エラー報告の一部の詳細が 異なります 。
以下の操作を順番に実行します:
- まず、関数は sentry オブジェクトを構築しチェックします。
- 自動変数を以下のように初期化します: std:: string out = std:: vformat ( os. getloc ( ) , fmt, args ) ; 。
- out を os に書き込みます:
-
- os が ネイティブ Unicode API を通じてのみ Unicode を表示可能な端末を参照している場合、 os をフラッシュし、ネイティブ Unicode API を使用して out を端末に書き込みます。
-
それ以外の場合、文字シーケンス
[out. begin ( ),out. end ( ))を os に挿入します。
端末への書き込みまたは os への挿入が失敗した場合、 os. setstate ( std:: ios_base :: badbit ) を呼び出します。
|
os に文字を書き込んだ後、 観測可能なチェックポイント を確立します。 |
(since C++26) |
ネイティブUnicode APIが使用される場合に out が無効なUnicode コードユニット を含んでいる場合、動作は未定義です。
目次 |
パラメータ
| os | - | データを挿入する出力ストリーム | ||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
各置換フィールドは以下の形式を持つ:
1)
フォーマット指定なしの置換フィールド
2)
フォーマット指定ありの置換フィールド
|
||||||||||||||||||||||||||||||||||||||||||||||
| args | - | フォーマットされる引数 | ||||||||||||||||||||||||||||||||||||||||||||||
例外
- std::bad_alloc メモリ確保失敗時に送出。
- 任意の formatter が送出する例外(例: std::format_error )を、 os. exceptions ( ) の値に関わらず伝播し、 os のエラー状態における ios_base::badbit を設定しない。
- os への挿入が失敗した場合に呼び出される os. setstate ( ios_base :: badbit ) によって引き起こされる ios_base::failure を送出する可能性がある。
注記
ネイティブUnicode APIの呼び出しにトランスコードが必要な場合、無効なコードユニットは
U+FFFD
REPLACEMENT CHARACTERで置換されます(「The Unicode Standard - Core Specification」、
Chapter 3.9
を参照)。
| 機能テスト マクロ | 値 | 規格 | 機能 |
|---|---|---|---|
__cpp_lib_print
|
202207L
|
(C++23) | フォーマット済み出力 |
__cpp_lib_format
|
202207L
|
(C++23) | std::basic_format_string の公開 |
例
|
このセクションは不完全です
理由: 例がありません |
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 4044 | C++23 |
端末がUnicodeを表示できる場合、
os が参照する端末では常にネイティブUnicode APIが使用されていた |
Unicodeを表示するためにネイティブUnicode APIのみを使用できる端末でのみ使用される |
関連項目
|
(C++23)
|
型消去された引数表現を使用して文字データを出力する
(関数) |
|
(C++23)
|
引数の書式化された表現を出力する
(関数テンプレート) |
|
文字データを挿入する、または右辺値ストリームに挿入する
(関数テンプレート) |
|
|
Unicode対応の
stdout
またはファイルストリームに型消去された引数表現を使用して出力する
(関数) |
|
|
(C++20)
|
引数の書式化された表現を新しい文字列に格納する
(関数テンプレート) |
外部リンク
| 1. | Unicode — Wikipedia |
| 2. | The Unicode Standard Version 14.0 — Core Specification |