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

对于表格的最后两行,后缀中的 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

参见

(C++20)
将参数的格式化表示存储到新字符串中
(函数模板)
duration 提供格式化支持
(类模板特化)
对字符串执行流输入和输出操作
(函数模板)
(C++11)
将整型或浮点型数值转换为 string
(函数)
(C++11)
将整型或浮点型数值转换为 wstring
(函数)