最終更新日時: 2024年06月11日 22時45分38秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<ostream>

# std::vprint_nonunicode(C++23)

    namespace std {
      void vprint_nonunicode(ostream& os,
                             string_view fmt,
                             format_args args); // (1) C++23
    }

## 概要

書式指定で非Unicode出力する。

- (1) : 指定した`ostream`に、書式指定で非Unicode出力する

デフォルトの標準出力に出力したい場合は、`<print>`ヘッダの`std::vprint_nonunicode()`関数を使用すること。

## 効果

- `os`の書式化出力関数として振る舞うが、以下の点が異なる：
  - 出力の生成失敗は、以下で規定されるように報告される
  - `vformat()`関数よって送出された例外は、`os.exceptions()`の値に関係なく、また`os`のエラー状態として`ios_base::badbit`をオンにすることなく、伝播される。

- `sentry`オブジェクトを構築した後、以下のように自動変数を初期化する：

      string out = vformat(fmt, args);

- 文字シーケンス `[out.begin(), out.end())` を `os` に挿入する。端末への書き込みまたは `os` への挿入が失敗した場合、`os.setstate(ios_base::badbit)` を呼び出す (`ios_base::failure`が送出される可能性がある)

## バージョン

### 言語

- C++23

### 処理系

- Clang: 19 ✅
- GCC: 14 ✅
- ICC: ??
- Visual C++: 2022 Update 7 ✅

## 関連項目

- `std::print()`
- `std::println()`
- `std::vprint_unicode()`

## 参照

- P2093R14 Formatted output