- ostream[meta header]
- std[meta namespace]
- function[meta id-type]
- cpp23[meta cpp]
namespace std {
void vprint_unicode(ostream& os,
string_view fmt,
format_args args); // (1) C++23
}- ostream[link /reference/ostream/basic_ostream.md]
- format_args[link /reference/format/basic_format_args.md]
書式指定でUnicode出力する。
- (1) : 指定した
ostreamに、書式指定でUnicode出力する
デフォルトの標準出力に出力したい場合は、<print>ヘッダのstd::vprint_unicode()関数を使用すること。
-
osの書式化出力関数として振る舞うが、以下の点が異なる:- 出力の生成失敗は、以下で規定されるように報告される
vformat()関数よって送出された例外は、os.exceptions()の値に関係なく、またosのエラー状態としてios_base::badbitをオンにすることなく、伝播される。
-
sentryオブジェクトを構築した後、以下のように自動変数を初期化する:string out = vformat(fmt, args);
- string[link /reference/string/basic_string.md]
- vformat[link /reference/format/vformat.md]
-
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 [mark verified]
- GCC: 14 [mark verified]
- ICC: ??
- Visual C++: 2022 Update 7 [mark verified]