Spec-Zone.ru › C++

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

Определено в заголовочном файле <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; // see below
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

Для двух последних строк таблицы num и den в суффиксе являются Period::type::num и Period::type::den, отформатированными как десятичное число без ведущих нулей, соответственно.

Возвращаемое значение

Ссылка на поток, то есть os.

Пример

В этом примере показан вывод std::chrono::operator<< при передаче ему длительности:

#include <chrono>
#include <iostream>
using namespace std::chrono_literals;

int main()
{
    constexpr auto duration = 123ms;
    std::cout << duration << '\n';
}

Вывод:

123ms

См. также

format
(C++20)
сохраняет отформатированное представление аргументов в новой строке
(шаблон функции)
std::formatter<std::chrono::duration>
(C++20)
поддержка форматирования для duration
(специализация шаблона класса)
operator<<operator>>
выполняет ввод и вывод строк в поток
(шаблон функции)
to_string
(C++11)
преобразует целочисленное значение или значение с плавающей точкой в string
(функция)
to_wstring
(C++11)
преобразует целочисленное значение или значение с плавающей точкой в wstring
(функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/chrono/duration/operator_ltlt

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API