Namespaces
Variants

std:: formatter <std::chrono::month_weekday_last>

From cppreference.net
定義済みヘッダー <chrono>
template < class CharT >
struct formatter < std:: chrono :: month_weekday_last , CharT > ;
(C++20以降)

std::formatter の特殊化で、 std::chrono::month_weekday_last の書式設定ルールを定義します。

std::formatter の特殊化は通常直接アクセスされることはなく、 フォーマット関数 を通じて使用されます。

目次

フォーマット仕様

書式指定は次の形式を持ちます

fill-and-align  (オプション) width  (オプション) precision  (オプション) L (オプション) chrono-spec  (オプション)

fill-and-align width 、および precision は、 標準フォーマット仕様 と同じ意味を持ちます。 precision は、表現型 Rep が浮動小数点型である std::chrono::duration 型に対してのみ有効であり、それ以外の場合 std::format_error がスローされます。

書式設定に使用されるロケールは以下のように決定されます:

  • フォーマット指定に L が存在しない場合、デフォルトの "C" ロケール、
  • それ以外の場合、フォーマット関数に渡された std::locale で示されるロケール(存在する場合)、
  • それ以外の場合( L が存在するがフォーマット関数に std::locale が渡されていない場合)、グローバルロケール。

もし (通常またはワイド) 文字列リテラルエンコーディング がUnicodeエンコーディング形式であり、ロケールが実装定義のロケールセットに含まれる場合、ロケールに依存する各置換は、置換文字シーケンスがリテラルエンコーディングに変換されたかのように実行されます。

chrono-spec は、1つ以上の変換指定子と( { } 、および % 以外の)通常文字で構成されます。 chrono-spec は変換指定子で始まる必要があります。すべての通常文字は変更なしで出力に書き込まれます。各変換指定子は % 文字で始まり、その後に指定子の動作を決定する文字が続きます。一部の変換指定子には、 % 文字の後に E または O 修飾文字が挿入される修正形式があります。各変換指定子は、以下に説明するように出力で適切な文字に置き換えられます。

特に指定がない限り、 chrono-spec が空の場合、chronoオブジェクトは以下のようにフォーマットされます: ストリーミング によって os 型のオブジェクト( std:: basic_ostringstream < CharT > )に、 フォーマットロケール( std:: locale :: classic ( ) 、 渡された std::locale オブジェクト、 または std:: locale :: global ( ) )を 適用した 状態でストリーミングし、 os. str ( ) を出力バッファにコピーし、 フォーマット指定子に応じた追加のパディングと調整を加えます。

以下のフォーマット指定子が利用可能です:

変換指定子
説明
%% リテラルの % 文字を書き出す
%n 改行文字を書き出す
%t 水平タブ文字を書き出す
%b
%h
ロケールの省略月名を書き出す
%B ロケールの完全な月名を書き出す
%m
%Om
月を10進数で書き出す(1月は 01 )。結果が1桁の場合は0が前置される

修正コマンド %Om はロケールの代替表現を書き出す

曜日
%a ロケールの省略曜日名を書き出す
%A ロケールの完全な曜日名を書き出す
%u
%Ou
ISO 曜日を10進数(1-7)で書き出す。月曜日は 1 となる

修正コマンド %Ou はロケールの代替表現を書き出す

%w
%Ow
曜日を10進数(0-6)で書き出す。日曜日は 0 となる

修正コマンド %Ow はロケールの代替表現を書き出す

以下の指定子は認識されますが、 std::format_error がスローされる原因となります:

変換指定子
(Conversion specifier)
説明
%C
%EC
年を100で除算した結果を床除算で書き出します。結果が1桁の10進数の場合、0が前置されます。

修正コマンド %EC は、世紀のロケール代替表現を書き出します。

%y
%Oy
%Ey
年の下2桁の10進数を書き込みます。結果が1桁の場合は0が前置されます。

修正コマンド %Oy はロケールの代替表現を書き込みます。

修正コマンド %Ey %EC (年のみ)からのオフセットのロケール代替表現を書き込みます。

%Y
%EY
年を10進数で書き込みます。結果が4桁未満の場合、0で左詰めされて4桁になります。

修正コマンド %EY は、ロケールの代替完全年表現を書き込みます。

%d
%Od
日を10進数で書き込みます。結果が1桁の10進数の場合、0が前置されます。

修正コマンド %Od はロケールの代替表現を書き込みます。

%e
%Oe
日付を10進数で出力します。結果が1桁の場合は、スペースが前に付加されます。

修飾コマンド %Oe はロケールの代替表現を出力します。

ISO 8601 週ベースの年

ISO 8601では週は月曜日から始まり、年の最初の週は以下の要件を満たさなければなりません:

  • 1月4日を含むこと
  • 年の最初の木曜日を含むこと
%g ISO 8601 週ベース年の下2桁を出力します。結果が1桁の場合は0が前置されます。
%G ISO 8601 週ベースの年を10進数で書き込みます。結果が4桁未満の場合、4桁になるまで0で左詰めされます。
%V
%OV
ISO 8601の週番号を10進数で書き出します。結果が1桁の場合、0が前置されます。

修正コマンド %OV はロケールの代替表現を書き出します。

年間の週/日
%j 年間の日を10進数で出力します(1月1日は 001 となります)。結果が3桁未満の場合、0で左側が埋められて3桁になります。
%U
%OU
年単位の週番号を10進数で書き出します。年の最初の日曜日が週01の最初の日となります。それ以前の同じ年の日付は週00となります。結果が1桁の場合、0が前置されます。

修正コマンド %OU はロケールの代替表現を書き出します。

%W
%OW
年における週番号を10進数で書き込みます。年の最初の月曜日が週01の最初の日となります。それ以前の同じ年の日付は週00となります。結果が1桁の場合、0が前置されます。

修正コマンド %OW はロケールの代替表現を書き込みます。

日付
%D "%m/%d/%y" と同等です。
%F "%Y-%m-%d" と同等です。
%x
%Ex
ロケールの日付表現を書き出します。

修正コマンド %Ex はロケールの代替日付表現を生成します。

時刻帯
%H
%OH
時間(24時間制)を10進数で書き込みます。結果が1桁の場合、0が前置されます。

修正コマンド %OH は、ロケールの代替表現を書き込みます。

%I
%OI
時間(12時間制)を10進数で書き出します。結果が1桁の場合、0が前置されます。

修正コマンド %OI はロケールの代替表現を書き出します。

%M
%OM
分を10進数で書き込みます。結果が1桁の場合、0が前置されます。

修正コマンド %OM はロケールの代替表現を書き込みます。

%S
%OS
秒を10進数で書き込みます。秒数が10未満の場合、結果の前に0が付加されます。

入力の精度が秒で正確に表現できない場合、フォーマットは固定形式の10進浮動小数点数となり、入力の精度に一致する精度(または18桁の小数部以内で10進浮動小数点数秒への変換ができない場合はマイクロ秒精度)で表示されます。小数点の文字はロケールに従ってローカライズされます。

修正コマンド %OS はロケールの代替表現を書き込みます。

%p 12時間制の時計に関連付けられたAM/PMの表示をロケールの対応する表現で書き出します。
%R "%H:%M" に相当します。
%T "%H:%M:%S" に相当します。
%r ロケールの12時間制時刻を書き込みます。
%X
%EX
ロケールの時間表現を書き込みます。

修正コマンド %EX はロケールの代替時間表現を書き込みます。

期間カウント
%Q 期間のティック数を書き出します。つまり、 count() によって取得される値です。
%q 期間の単位接尾辞を、 operator<<() で指定された通りに書き出します。
タイムゾーン
%z
%Ez
%Oz
ISO 8601形式でUTCからのオフセットを書き込みます。例えば -0430 はUTCより4時間30分遅れていることを示します。オフセットがゼロの場合、 +0000 が使用されます。

修正コマンド %Ez および %Oz は時間と分の間に : を挿入します(例: -04:30 )。

%Z タイムゾーン略称を出力します。
その他
%c
%Ec
ロケールの日付と時刻の表現を書き込みます。

修正コマンド %Ec はロケールの代替日付と時刻の表現を書き込みます。

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
P2372R3 C++20 formatter はグローバルロケールまたは渡されたロケールを使用 L が存在しない場合、デフォルトの "C" ロケールが使用される

関連項目

(C++20)
引数のフォーマットされた表現を新しい文字列に格納する
(関数テンプレート)