名前空間
変種
操作

std::println(std::ostream)

From cppreference.com
< cpp‎ | io‎ | basic_ostream
 
 
 
 
ヘッダ<ostream>で定義
template< class... Args >
void println( std::ostream& os, std::format_string<Args...> fmt, Args&&... args );
(1) (C++23から)
void println( std::ostream& os );
(2) (C++26以降)

args をフォーマット文字列 fmt に従ってフォーマットし、末尾に '\n' (つまり、各出力は改行で終わります) を追加し、結果を os ストリームに挿入します。

1) 次と同等: std::print(os, "{}\n", std::format(os.getloc(), fmt, args...));
2) 次と同等: std::print(os, "\n");

Args 内の任意の Ti について、std::formatter<Ti, char>std::make_format_args によって要求される BasicFormatter 要件を満たさない場合、動作は未定義です。

目次

[編集] Parameters

os - データを挿入する出力ストリーム
fmt - フォーマット文字列を表すオブジェクト。フォーマット文字列は以下で構成される:
  • 通常の文字({} を除く)は、変更されずに出力にコピーされる。
  • エスケープシーケンス {{}} は、それぞれ出力で {} に置き換えられる。
  • 置換フィールド。

各置換フィールドは以下の形式を持つ。

{ arg-id (オプション) } (1)
{ arg-id (オプション) : format-spec } (2)
1) フォーマット指定なしの置換フィールド
2) フォーマット指定ありの置換フィールド
arg-id - フォーマットに使用する args 内の引数のインデックスを指定する。省略された場合、引数は順番に使用される。

フォーマット文字列内の arg-id は、すべて存在するか、すべて省略されなければならない。手動と自動のインデックス付けを混在させることはエラーである。

format-spec - 対応する引数に対する std::formatter 特殊化によって定義されるフォーマット指定。} で開始することはできない。

(C++23から)
(C++26以降)
  • その他のフォーマット可能な型の場合、フォーマット指定はユーザー定義の formatter 特殊化によって決定される。
args... - フォーマットする引数

[編集] Exceptions

  • アロケーションに失敗した場合、std::bad_alloc
  • os.exceptions() の値に関係なく、また os のエラー状態に ios_base::badbit を設定することなく、いずれかの formatter によってスローされた例外(例: std::format_error)を伝播します。
  • os への挿入が失敗した場合に呼び出される os.setstate(ios_base::badbit) によって引き起こされる ios_base::failure をスローする可能性があります。

[編集] Notes

オーバーロード (2) は C++26 で追加されますが、知られているすべての実装は C++23 モードで利用可能にしています。

機能テストマクロ 規格 機能
__cpp_lib_print 202207L (C++23) 書式付き出力
__cpp_lib_format 202207L (C++23) std::basic_format_string の公開

[編集] Example

[編集] Defect reports

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 4088 C++23 (1) フォーマット引数において os に設定されたロケールを無視していました。 そのようなロケールが使用されます。

[編集] See also

引数の書式化された表現を出力する
(関数テンプレート) [編集]
(C++23)
std::printと同じだが、各出力の末尾に改行が追加される点が異なる
(関数テンプレート) [編集]
(C++20)
引数のフォーマット済み表現を新しい文字列に格納する
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)