计时类型到字符串 c++20

chrono type to string c++20

我正在尝试将时间格式化为 hh::mm::ss,然后将其放入宽字符串流中。代码如下


        std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();

        std::chrono::steady_clock::duration time_elapsed = end - start;

        std::chrono::hh_mm_ss formatted {std::chrono::duration_cast<std::chrono::milliseconds> (time_elapsed)};

start在class的构造函数中。使用 << 流运算符不起作用,我看不出有任何方法可以将此类型转换为字符串。
我的问题是如何将 formatted 转换为字符串(c 样式、wstring 或普通字符串)?

以下内容适用于 MSVC。 从 2021-08-12 开始,我必须将 /std:c++latest 开关与 Visual Studio 版本 16.11.2 一起使用才能使此解决方案起作用。

const auto start{ std::chrono::steady_clock::now( ) };
std::this_thread::sleep_for( std::chrono::milliseconds{ 1000 } );
const auto end{ std::chrono::steady_clock::now( ) };

const auto elapsed{ end - start };

std::chrono::hh_mm_ss formatted{ 
    std::chrono::duration_cast<std::chrono::milliseconds>( elapsed ) };

std::cout << formatted << '\n';

// Or
std::stringstream ss{ };
ss << formatted;

std::cout << ss.str( ) << '\n';