| Defined in header <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 ); | (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.flags(os.flags()); s.imbue(os.getloc()); s.precision(os.precision()); 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) orus, 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.
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';
}Output:
123ms
| (C++20) | stores formatted representation of the arguments in a new string (function template) | 
| (C++20) | formatting support for duration(class template specialization) | 
| performs stream input and output on strings (function template) | |
| (C++11) | converts an integral or floating point value to string(function) | 
| (C++11) | converts an integral or floating point value to wstring(function) | 
    © cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
    https://en.cppreference.com/w/cpp/chrono/duration/operator_ltlt