std::chrono::format
template<class CharT, class Streamable> std::basic_string<CharT> format(const CharT* fmt, const Streamable& s); | (1) | (C++20以上) |
template<class CharT, class Streamable> std::basic_string<CharT> format(conststd::locale& loc, const CharT* fmt, const Streamable& s); | (2) | (C++20以上) |
template<class CharT, class Traits, class Alloc, class Streamable> std::basic_string<CharT, Traits, Alloc> format(conststd::basic_string<CharT, Traits, Alloc>& fmt, | (3) | (C++20以上) |
template<class CharT, class Traits, class Alloc, class Streamable> std::basic_string<CharT, Traits, Alloc> format(conststd::locale& loc, | (4) | (C++20以上) |
書式文字列 fmt
およびロケール loc
(指定された場合) を使用して、ストリーム可能なオブジェクト s
をフォーマットします。
これらの関数テンプレートは以下のように行われたかのように動作します。
- std::basic_ostringstream<CharT, Traits, Alloc>
os
を構築します ((1,2) の場合、Traits
は std::char_traits<CharT>、Alloc
は std::allocator<CharT> になります)。 - os.exceptions(std::ios_base::failbit|std::ios_base::badbit) を実行します。
- os.imbue(loc) を呼びます (オーバーロード (2,4) の場合のみ)。
- to_stream(os, fmt, s) ((1,2) の場合) または to_stream(os, fmt.c_str(), s) ((3,4) の場合) を呼びます。 ただし
to_stream
は実引数依存の名前探索を有効にするため非修飾で呼ばれます。 - そして os.str() を返します。
[編集] 書式文字列
書式文字列は0個以上の変換指定子および通常の文字から構成されます。 通常の文字は、終端のヌル文字を除き、変更されずに出力ストリームに書き込まれます。 無修飾の変換指定子は %
文字で始まり、その後に指定子の動作を決める文字が続きます。 変換指定子には、 %
文字の後に修飾文字 E
または O
が挿入される、修飾付きの形式を持つものもあります。 各変換指定子は、以下で説明するように、適切な文字列に置き換えて出力されます。
書式文字列中の、 %
で始まるけれども以下の変換指定子のいずれにも一致しない文字シーケンスは、通常の文字として解釈されます。
以下の変換指定子が利用できます。
変換指定子 | 説明 | |
---|---|---|
%% | % 文字を書き込みます。 | |
%n | 改行文字を書き込みます。 | |
%t | 水平タブ文字を書き込みます。 | |
年 | ||
%C %EC | 年を100で割って切り捨てた値を書き込みます。 結果が10進数1桁の場合、前に0が付加されます。 修飾付きのコマンド | |
%y | 年の10進数の下2桁を書き込みます。 結果が1桁の場合、前に0が付加されます。 | |
%Y | 年を10進数として書き込みます。 結果が4桁未満の場合、4桁になるまで前に0が付加されます。 | |
月 | ||
%b %h | ロケールの省略形の月名を書き込みます。 | |
%B | ロケールの完全形の月名を書き込みます。 | |
%m %Om | 月を10進数として書き込みます (1月が 01 です)。 結果が1桁の場合、 前に0が付加されます。 修飾付きのコマンド | |
日 | ||
%d %Od | 日を10進数として書き込みます。 結果が1桁の場合、前に0が付加されます。 修飾付きのコマンド | |
%e %Oe | 日を10進数として書き込みます。 結果が1桁の場合、前に空白が付加されます。 修飾付きのコマンド | |
曜日 | ||
%a | ロケールの省略形の曜日名を書き込みます。 | |
%A | ロケールの完全形の曜日名を書き込みます。 | |
%u %Ou | ISO の曜日を10進数 (1〜7) として書き込みます。 月曜日が 1 です。 修飾付きのコマンド | |
%w %Ow | 曜日を10進数 (0〜6) として書き込みます。 日曜日が 0 です。 修飾付きのコマンド | |
ISO 8601 の週基準の年 | ||
ISO 8601 では、週は月曜日から始まり、年の最初の週は、以下の要件を満たさなければなりません。
| ||
%g | ISO 8601 の週基準の年の10進数の下2桁を書き込みます。 結果が1桁の場合、前に0が付加されます。 | |
%G | ISO 8601 の週基準の年を10進数として書き込みます。 結果が4桁未満の場合、4桁になるまで前に0が付加されます。 | |
%V %OV | ISO 8601 の週番号を10進数として書き込みます。 結果が1桁の場合、前に0が付加されます。 修飾付きのコマンド | |
週番号および通日 | ||
%j | 通日を10進数として書き込みます (1月1日が 001 です)。 結果が3桁未満の場合、3桁になるまで前に0が付加されます。 | |
%U %OU | 週番号を10進数として書き込みます。 その年の最初の日曜日が週番号01の最初の日です。 同じ年のそれより前の日は週番号00です。 結果が1桁の場合、前に0が付加されます。 修飾付きのコマンド | |
%W %OW | 週番号を10進数として書き込みます。 その年の最初の月曜日が週番号01の最初の日です。 同じ年のそれより前の日は週番号00です。 結果が1桁の場合、前に0が付加されます。 修飾付きのコマンド | |
日付 | ||
%D | "%m/%d/%y" と同等です。 | |
%F | "%Y-%m-%d" と同等です。 | |
%x %Ex | ロケールの日付表現を書き込みます。 修飾付きのコマンド | |
時刻 | ||
%H %OH | 時 (24時間表記) を10進数として書き込みます。 結果が1桁の場合、前に0が付加されます。 修飾付きのコマンド | |
%I %OI | 時 (12時間表記) を10進数として書き込みます。 結果が1桁の場合、前に0が付加されます。 修飾付きのコマンド | |
%M %OM | 分を10進数として書き込みます。 結果が1桁の場合、前に0が付加されます。 修飾付きのコマンド | |
%S %OS | 秒を10進数として書き込みます。 秒数が10未満の場合、前に0が付加されます。 入力の精度が正確に秒で表せない場合、書式は固定小数点表記と入力の精度にマッチする精度 (または、浮動小数点の10進数の秒への変換が小数点以下18桁以内で行えない場合はマイクロ秒の精度) を持つ10進浮動小数点数になります。 小数点の文字はロケールに従ってローカライズされます。 修飾付きのコマンド | |
%p | 午前/午後に相当するロケールの表現を書き込みます。 | |
%R | "%H:%M" と同等です。 | |
%T | "%H:%M:%S" と同等です。 | |
%r | ロケールの12時間表記の時刻表現を書き込みます。 | |
%X %EX | ロケールの時刻表現を書き込みます。 修飾付きのコマンド | |
その他 | ||
%c %Ec | ロケールの日付時刻表現を書き込みます。 修飾付きのコマンド | |
%z %Ez %Oz | UTC からのオフセットを ISO 8601 形式で書き込みます。 例えば、 -0430 は UTC より4時間30分遅れていることを表します。オフセットがゼロの場合、 +0000 が使用されます。 修飾付きのコマンド | |
%Z | タイムゾーンの省略形を書き込みます。 |
[編集]関連項目
指定された書式に従って sys_time をストリームに出力します (関数テンプレート) | |
指定された書式に従って utc_time をストリームに出力します (関数テンプレート) | |
指定された書式に従って tai_time をストリームに出力します (関数テンプレート) | |
指定された書式に従って gps_time をストリームに出力します (関数テンプレート) | |
指定された書式に従って file_time をストリームに出力します (関数テンプレート) | |
指定された書式に従って local_time をストリームに出力します (関数テンプレート) | |
指定された書式に従って year をストリームに出力します (関数テンプレート) | |
指定された書式に従って month をストリームに出力します (関数テンプレート) | |
指定された書式に従って day をストリームに出力します (関数テンプレート) | |
指定された書式に従って weekday をストリームに出力します (関数テンプレート) | |
指定された書式に従って month_day をストリームに出力します (関数テンプレート) | |
指定された書式に従って year_month をストリームに出力します (関数テンプレート) | |
指定された書式に従って year_month_day をストリームに出力します (関数テンプレート) | |
指定された書式に従って zoned_time をストリームに出力します (関数テンプレート) |