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

来自cppreference.com
< cpp‎ | chrono‎ | duration
 
 
工具库
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)
(C++20)
swap 与类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)
 
 
 
在标头 <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 中,若 CharT 既非 char 亦非 wchar_t ,或若 Rep 既非浮点类型亦非转换等级大于或等于 short 的类型,则行为未定义。

表现如同它实现为

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

对于表中最后二行,后缀中的 numden 分别是格式化为不带前导零的 Period::type::numPeriod::type::den

返回值

到流的引用,即 os

参阅

(C++20)
在新 string 中存储参数的格式化表示
(函数模板)
std::formatter 的特化,按提供的格式格式化 duration
(类模板特化)
执行字符串的流输入与输出
(函数模板)
(C++11)
转换整数或浮点值为 string
(函数)
转换整数或浮点值为 wstring
(函数)