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