namespace std {
void vprint_unicode(ostream& os,
string_view fmt,
format_args args); // (1) C++23
}
概要
書式指定でUnicode出力する。
- (1) : 指定した
ostream
に、書式指定でUnicode出力する
デフォルトの標準出力に出力したい場合は、<print>
ヘッダのstd::vprint_unicode()
関数を使用すること。
効果
os
の書式化出力関数として振る舞うが、以下の点が異なる:- 出力の生成失敗は、以下で規定されるように報告される
vformat()
関数よって送出された例外は、os.exceptions()
の値に関係なく、またos
のエラー状態としてios_base::badbit
をオンにすることなく、伝播される。
-
sentry
オブジェクトを構築した後、以下のように自動変数を初期化する:
-
os
が実装定義されたUnicodeを表示できる端末を参照するストリームである場合、ネイティブのUnicode APIを使用して端末に書き出す out
に無効なコードユニットが含まれる場合、その動作は未定義であり,実装者はそれを診断することが推奨される- ネイティブのUnicode APIを使用する場合、この関数は
out
を書き出す前にフラッシュする
例外
vformat()
関数がなんらかの例外を送出する可能性がある- 端末かストリームへの書き込みに失敗した場合、
system_error
を送出する bad_alloc
を送出する可能性がある
備考
- 推奨の方式:ネイティブのUnicode APIを呼び出す際に文字コード変換が必要な場合、実装はUnicode標準 (Unicode Standard Version 14.0 - Core Specification, Chapter 3.9) に従って無効なコードユニットを「U+FFFD REPLACEMENT CHARACTER」で置き換える必要がある
バージョン
言語
- C++23
処理系
- Clang: 19 ✅
- GCC: 14 ✅
- ICC: ??
- Visual C++: 2022 Update 7 ✅