【发布时间】:2020-11-17 06:57:48
【问题描述】:
我的目标是将"%H:%M:%S" 中的一个string 转换为C++11 中的chrono::duration。
例如,为了转换"00:15:00",
我想出了以下间接解决方案,其中我计算了两个时间点(1)"00:15:00" 和(2)"00:00:00",它们与system_clock 或steady_clock 相关:然后我将它们彼此相减得到持续时间。
std::tm tm0 = {}, tm1{};
std::stringstream ss0("00:00:00"), ss1("00:15:00");
ss0 >> std::get_time(&tm0, "%H:%M:%S");
ss1 >> std::get_time(&tm1, "%H:%M:%S");
auto t0 = std::chrono::system_clock::from_time_t(std::mktime(&tm0));
auto t1 = std::chrono::system_clock::from_time_t(std::mktime(&tm1));
auto d = t1-t0;
std::cout << std::chrono::duration_cast<std::chrono::seconds>(d).count();
它会进行转换,但我想知道是否有一种优雅的方式或直接的方式来实现这一点。
【问题讨论】: