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

来自cppreference.com
< cpp‎ | 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; // 见后述
return os << s.str();

换言之,流标志、本地环境和精度由流确定,但用整个输出字符串确定任何填充。

units_suffix 基于按照下表的 Period::type 确定。

Period::type后缀
std::attoas
std::femtofs
std::picops
std::nanons
std::microµs (U+00B5)us,使用何者是实现定义的
std::millims
std::centics
std::decids
std::ratio<1>s
std::decadas
std::hectohs
std::kiloks
std::megaMs
std::gigaGs
std::teraTs
std::petaPs
std::exaEs
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

示例

此示例展示给定时长时 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
(函数)
转换整数或浮点数为 wstring
(函数)