std:: print (std::ostream)
|
定義済みヘッダー
<ostream>
|
||
|
template
<
class
...
Args
>
void print ( std:: ostream & os, std:: format_string < Args... > fmt, Args && ... args ) ; |
(C++23以降) | |
フォーマット文字列 fmt に従って args をフォーマットし、結果を os ストリームに挿入します。
もし ordinary literal encoding がUTF-8である場合、以下と同等です:
- std::vprint_unicode ( os, fmt. get ( ) , std:: make_format_args ( args... ) ) ; それ以外の場合、
- std::vprint_nonunicode ( os, fmt. get ( ) , std:: make_format_args ( args... ) ) ; 。
std:: formatter < Ti, char > が BasicFormatter の要件を満たさない場合( std:: make_format_args によって要求される通り)、動作は未定義です。
目次 |
パラメータ
| os | - | データを挿入する出力ストリーム | ||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
各置換フィールドは以下の形式を持つ:
1)
フォーマット指定なしの置換フィールド
2)
フォーマット指定ありの置換フィールド
|
||||||||||||||||||||||||||||||||||||||||||||||
| args... | - | フォーマットされる引数 | ||||||||||||||||||||||||||||||||||||||||||||||
例外
- std::bad_alloc がメモリ確保失敗時に送出される。
- 任意の フォーマッタ が送出する例外(例: std::format_error )を、 os. exceptions ( ) の値に関わらず伝播し、 os のエラー状態における ios_base::badbit を設定しない。
- os への挿入が失敗した場合に呼び出される os. setstate ( ios_base :: badbit ) によって引き起こされる ios_base::failure を送出する可能性がある。
注記
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_print
|
202207L
|
(C++23) | フォーマット済み出力 |
__cpp_lib_format
|
202207L
|
(C++23) | std::basic_format_string の公開 |
例
#include <array> #include <cctype> #include <cstdio> #include <format> #include <numbers> #include <ranges> #include <sstream> int main() { std::array<char, 24> buf; std::format_to(buf.begin(), "{:.15f}", std::numbers::sqrt2); unsigned num{}, sum{}; for (auto n : buf | std::views::filter(isdigit) | std::views::transform([](char x) { return x - '0'; }) | std::views::take_while([&sum](char) { return sum < 42; })) sum += n, ++num; std::stringstream stream; #ifdef __cpp_lib_print std::print(stream, #else stream << std::format( #endif "√2 \N{ALMOST EQUAL TO} {0}.\n" "The sum of its first {1} digits is {2}.", std::numbers::sqrt2, num, sum ); std::puts(stream.str().data()); }
出力:
√2 ≈ 1.4142135623730951. The sum of its first 13 digits is 42.
関連項目
|
(C++23)
|
引数の
フォーマット済み
表現を出力し、末尾に
'
\n
'
を追加する
(関数テンプレート) |
|
(C++23)
|
標準出力
またはファイルストリームに引数の
フォーマット済み
表現を使用して出力する
(関数テンプレート) |
|
(C++20)
|
引数のフォーマット済み表現を新しい文字列に格納する
(関数テンプレート) |