最終更新日時(UTC):
が更新

履歴 編集

function
<chrono>

std::format(C++20)

namespace std {
  // 追加宣言なし
}

概要

chronoライブラリのクラスオブジェクトに対する文字列フォーマット。

ここでは宣言はとくにないが、std::format()に対してchronoライブラリの各クラスオブジェクトを出力できるようstd::formatterクラスが各クラスで特殊化されている。

chronoライブラリでのフォーマットフラグ

std::format()関数の通常の指定では、置換フィールド{}内に基数、精度、0埋め指定、アライメントなどを指定する。

chronoライブラリではこれに加え、たとえばデフォルトでは年・月・日を出力するyear_month_dayクラスに対して「"年/月"」というフォーマットで出力するよう"{%Y/%m}"のように指定することでデフォルトとは異なる出力をさせることができる。

フォーマットフラグ 説明
%a ロケール依存の曜日の略称。
値に有効な曜日が含まれていない場合、std::format_error例外を送出する
"Fri", "金"
%A ロケール依存の曜日の完全名。
値に有効な曜日が含まれていない場合、std::format_error例外を送出する
"Friday", "金曜日"
%b ロケール依存の月の略称。
値に有効な月が含まれていない場合、std::format_error例外を送出する
"Apr", "4月"
%B ロケール依存の月の完全名。
値に有効な月が含まれていない場合、std::format_error例外を送出する
"April", "4月"
%c ロケール依存の日付・時間の表現。改良コマンド%Ecを指定すると、異なる表現を出力する "Fri Apr 24 17:14:44 2020"
"2020年04月24日 17時14分44秒"
%Ecでは"令和02年04月24日 17時14分44秒"
%C 100で切り下げ除算した年 (世紀)。結果が10進数で1桁の場合、先頭に0がつく。改良コマンド%ECを指定すると、ロケール依存の世紀の異なる表現を出力する "21"
%ECでは"令和" (元号)
%d 10進数での月の日。結果が10進数で1桁の場合、先頭に0がつく。改良コマンド%Odを指定すると、ロケール依存の異なる表現を出力する "24"
%D %m/%d/%yと等価 "04/24/20"
%e 10進数での月の日。結果が10進数で1桁の場合、先頭にスペースがつく。改良コマンド%Oeを指定すると、ロケール依存の異なる表現を出力する " 1"
%F %Y-%m-%dと等価 "2020-04-24"
%g ISOの週ベースのうしろ2桁10進数の年。結果が1桁の場合、先頭に0がつく "20"
%G ISOの週ベースの10進数の年。結果が4桁未満の場合、4桁になるよう左が0で埋められる "2020"
%h %bと等価 "Jan", "4月"
%H 24時間時計での10進数の時。結果が1桁の場合、先頭に0がつく。改良コマンド%OHを指定知ると、ロケール依存の異なる表現を出力する "17"
%I 12時間時計での10進数の時。結果が1桁の場合、先頭に0がつく。改良コマンド%OIを指定知ると、ロケール依存の異なる表現を出力する "05"
%j 10進数での年の日。1月1日は001が出力される。結果が3桁未満の場合、3桁になるよう左が0で埋められる "115"
%m 10進数での月。1月は01が出力される。結果が1桁の場合、先頭に0がつく。改良コマンド%Omを指定すると、ロケール依存の異なる表現を出力する "04"
%M 10進数での分。結果が1桁の場合、先頭に0がつく。改良コマンド%OMを指定すると、ロケール依存の異なる表現を出力する "14"
%n 改行文字
%p 12時間時計でのロケール依存の午前・午後の表現 "PM", "午後"
%q duration単位ごとのサフィックス。durationoperator<<で出力されるサフィックスと等価 "s"
%Q durationの数値。.count()で取得した値 "44"
%r 12時間時計でのロケール依存の時間 "05:14:44 PM"
"午後05時14分44秒"
%R %H:%Mと等価 "17:14"
%S 10進数での秒。10秒未満の場合、先頭に0がつく。入力が秒の精度と正確に一致しない場合、浮動小数点フォーマットで出力される。10進数の浮動小数点数で小数点以下18桁以内で表現できない場合、マイクロ秒で出力される。改良コマンド%OSを指定すると、ロケール依存の異なる表現を出力する "44"
"44.123"
%t 水平タブ文字
%T %H:%M:%Sと等価 "17:14:44.123"
%u 10進数での月曜を1とするISO曜日番号 (1-7)。改良コマンド%Ouを指定すると、ロケール依存の異なる表現を出力する "5"
%U 10進数での年の週番号。年の最初の日曜日が最初の曜日であるとして01、同年のそれより前の日は00となる。結果が1桁の場合、先頭に0がつく。改良コマンド%OUを指定すると、ロケール依存の異なる表現を出力する "16"
%V 10進数でのISO週ベースの週番号。結果が1桁の場合、先頭に0がつく。改良コマンド%OVを指定すると、ロケール依存の異なる表現を出力する "17"
%w 10進数での日曜を0とする曜日番号 (0-6)。改良コマンド%Owを指定すると、ロケール依存の異なる表現を出力する "5"
%W 10進数での年の週番号。年の最初の月曜日が最初の曜日であるとして01、同年のそれより前の日は00となる。結果が1桁の場合、先頭に0がつく。改良コマンド%OWを指定すると、ロケール依存の異なる表現を出力する "16"
%x ロケール依存の日付表現。改良コマンド%Exを指定すると、ロケール依存の異なる表現が出力される "04/24/20"
"2020年04月24日"
%Exでは"令和02年04月24日"
%X ロケール依存の時間表現。改良コマンド%EXを指定すると、ロケール依存の異なる表現が出力される "17:14:44"
"17時14分44秒"
%y 10進数での年のうしろ2桁。結果が1桁の場合、先頭に0がつく。改良コマンド%Oyを指定すると、ロケール依存の異なる表現を出力する。改良コマンド%Eyを指定すると、%ECからのオフセットとしてロケール依存の異なる表現を出力する。 "20"
%Eyでは"02"
%Y 10進数での年。結果が4桁未満の場合、4桁になるよう左が0で埋められる。改良コマンド%EYを指定すると、ロケール依存の異なる表現の完全な年を出力する "2020"
%EYでは"令和02年"
%z ISO 8601フォーマットでのUTCからのオフセット。例として-0430はUTCから4時間30分遅れていることを表す。オフセットがゼロの場合は+0000が使用される。改良コマンド%Ez%Ozを指定すると、時と分の間にコロン (:) が挿入される。オフセット情報が利用可能でない場合、std::format_error例外を送出する "+0900"
%Ezでは"+09:00"
%Z タイムゾーンの略称。タイムゾーンの略称が利用可能でない場合、std::format_error例外を送出する "JST"
%% 文字% "%"

chronoライブラリの各クラスのデフォルトフォーマット

戻り値

#include <iostream>
#include <format>
#include <chrono>

namespace chrono = std::chrono;

int main()
{
}

出力例

バージョン

言語

  • C++20

処理系

  • Clang: (9.0時点で実装なし)
  • GCC: (9.2時点で実装なし)
  • Visual C++: (2019 Update 3時点で実装なし)

参照