c++20 将 chrono 类型转换为字符串

noa*_*oah 0 c++ c++-chrono 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)};
Run Code Online (Sandbox Code Playgroud)

start位于类的构造函数中。使用<<流运算符不起作用,我没有看到任何方法将此类型转换为字符串。
我的问题是如何转换formatted为字符串(c 风格、wstring 或普通字符串)?

WBu*_*uck 5

以下内容对我有用MSVC。截至 2021 年 8 月 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';
Run Code Online (Sandbox Code Playgroud)