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 в суффиксе форматируются как десятичное число без ведущих нулей соответственно.

Значение результата

Ссылка на поток, т.е., 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/w/cpp/chrono/duration/operator_ltlt

Spec-Zone.ru

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