• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <ostream>

    std::vprint_unicode

    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オブジェクトを構築した後、以下のように自動変数を初期化する:

      string out = vformat(fmt, args);
      

    • 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

    処理系

    関連項目

    参照