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

Defined in header <chrono>
    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 );
(since C++20)

Inserts a textual representation of d into os.

Behaves as if it was implemented as.

std::basic_ostringstream<CharT, Traits> s;
s << d.count() << units_suffix; // see below
return os << s.str();

In other words, the stream flags, locale, and precision are determined by the stream, but any padding are determined using the entire output string.

The units_suffix is determined based on Period::type according to the following table.

Period::type Suffix
std::atto as
std::femto fs
std::pico ps
std::nano ns
std::micro µs (U+00B5) or us, it is implementation-defined which one is used
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
None of the above, and Period::type::den == 1 [num]s
None of the above [num/den]s

For the last two rows of the table, num and den in the suffix are Period::type::num and Period::type::den formatted as a decimal number with no leading zeroes, respectively.

Return value

A reference to the stream, i.e., os.


This example shows the output of std::chrono::operator<< when given a duration:

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



See also

stores formatted representation of the arguments in a new string
(function template)
formatting support for duration
(class template specialization)
performs stream input and output on strings
(function template)
converts an integral or floating point value to string
converts an integral or floating point value to wstring

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.