std:: print
|
定義済みヘッダー
<print>
|
||
|
template
<
class
...
Args
>
void print ( std:: format_string < Args... > fmt, Args && ... args ) ; |
(1) | (C++23以降) |
|
template
<
class
...
Args
>
void
print
(
std::
FILE
*
stream,
|
(2) | (C++23以降) |
書式文字列 fmt に従って args をフォーマットし、結果を出力ストリームに出力します。
? std:: vprint_unicode ( stream, fmt. str , std:: make_format_args ( args... ) )
: std :: vprint_unicode_buffered ( stream, fmt. str , std:: make_format_args ( args... ) ) ; 。
? std:: vprint_nonunicode ( stream, fmt. str , std:: make_format_args ( args... ) )
: std :: vprint_nonunicode_buffered ( stream, fmt. str , std:: make_format_args ( args... ) ) ; .
Args
内のいずれかの
Ti
について
std::
formatter
<
Ti,
char
>
が
BasicFormatter
要件を満たさない場合(
std::make_format_args
で要求される通り)、動作は未定義です。
目次 |
パラメータ
| stream | - | 書き込み先の出力ファイルストリーム | ||||||||||||||||||||||||||||||||||||||||||||||
| fmt | - |
各置換フィールドは以下の形式を持つ:
1)
フォーマット指定なしの置換フィールド
2)
フォーマット指定ありの置換フィールド
|
||||||||||||||||||||||||||||||||||||||||||||||
| args... | - | フォーマットする引数 | ||||||||||||||||||||||||||||||||||||||||||||||
例外
- std::bad_alloc メモリ確保失敗時。
- std::system_error 、ストリームへの書き込み失敗時。
- 使用された formatters によって送出された例外を伝播(例: std::format_error )。
注記
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_print
|
202207L
|
(C++23) | 書式付き出力 |
202403L
|
(C++26)
(DR23) |
バッファリングなしの書式付き出力 | |
202406L
|
(C++26)
(DR23) |
より多くの書式可能な型に対するバッファリングなし書式付き出力の有効化 | |
__cpp_lib_format
|
202207L
|
(C++23) | std::basic_format_string の公開 |
例
#include <cstdio> #include <filesystem> #include <print> int main() { std::print("{2} {1}{0}!\n", 23, "C++", "Hello"); // オーバーロード (1) const auto tmp{std::filesystem::temp_directory_path() / "test.txt"}; if (std::FILE* stream{std::fopen(tmp.c_str(), "w")}) { std::print(stream, "File: {}", tmp.string()); // オーバーロード (2) std::fclose(stream); } }
出力:
Hello C++23!
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| P3107R5 | C++23 | バッファリングされた印刷操作のみ実行可能 | バッファリングされていない印刷操作を実行可能 |
| P3235R3 | C++23 | P3107R5 によって追加された関数名が誤解を招く | 関数名を変更 |
関連項目
|
(C++23)
|
std::print
と同じだが、各出力が追加の改行で終了する
(関数テンプレート) |
|
(C++23)
|
引数の
フォーマット済み
表現を出力する
(関数テンプレート) |
|
(C++20)
|
引数のフォーマット済み表現を新しい文字列に格納する
(関数テンプレート) |
|
(C++20)
|
出力イテレータを通じて引数のフォーマット済み表現を書き出す
(関数テンプレート) |
|
(C++11)
|
フォーマット済み出力を
stdout
、ファイルストリーム、またはバッファに出力する
(関数) |