Namespaces
Variants

std::chrono:: operator<< (std::chrono::duration)

From cppreference.net
ヘッダーで定義 <chrono>
template <

class CharT,
class Traits,
class Rep,
class Period
> std:: basic_ostream < CharT, Traits > &
operator << ( std:: basic_ostream < CharT, Traits > & os,

const std:: chrono :: duration < Rep, Period > & d ) ;
(C++20以降)

d のテキスト表現を os に挿入します。

以下のように実装されているかのように動作します

std::basic_ostringstream<CharT, Traits> s;
s.flags(os.flags());
s.imbue(os.getloc());
s.precision(os.precision());
s << d.count() << units_suffix; // 下記参照
return os << s.str();

言い換えれば、ストリームフラグ、ロケール、および精度はストリームによって決定されますが、パディングは出力文字列全体を使用して決定されます。

units_suffix は以下の表に基づき Period::type に応じて決定されます。

Period::type 接尾辞
std::atto as
std::femto fs
std::pico ps
std::nano ns
std::micro µs (U+00B5) または us 、どちらが使用されるかは実装定義
std::milli ms
std::centi cs
std::deci ds
std::ratio<1> s
std::deca das
std::hecto hs
std::kilo ks
std::mega Ms
std::giga Gs
std::tera Ts
std::peta Ps
std::exa Es
std::ratio<60> min
std::ratio<3600> h
std::ratio<86400> d
上記のいずれでもなく、かつ Period :: type :: den == 1 [ num ]s
上記のいずれでもない場合 [ num / den ]s

テーブルの最後の2行において、 num および den のサフィックスは、それぞれ Period::type::num および Period::type::den を先行ゼロなしの10進数でフォーマットしたものです。

戻り値

ストリームへの参照、すなわち os を返します。

この例は、期間が与えられたときの std::chrono::operator<< の出力を示しています:

#include <chrono>
#include <iostream>
using namespace std::chrono_literals;
int main()
{
    constexpr auto duration = 123ms;
    std::cout << duration << '\n';
}

出力:

123ms

関連項目

(C++20)
引数のフォーマットされた表現を新しい文字列に格納する
(関数テンプレート)
duration のフォーマットサポート
(クラステンプレートの特殊化)
文字列に対するストリーム入出力を実行する
(関数テンプレート)
(C++11)
整数値または浮動小数点値を string に変換する
(関数)
(C++11)
整数値または浮動小数点値を wstring に変換する
(関数)