我的目标是将形式为“%H:%M:%S”的一个字符串转换为C ++ 11中的chrono :: duration。
例如,为了将“00:15:00”转换,我想出了以下间接解决方案,其中我计算了两个时间点(1)“00:15:00”和(2)“00:00:00”,它们与system_clock或steady_clock有关:然后我从彼此中减去它们以获得持续时间。
例如,为了将“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();
它可以完成转换,但我想知道是否有更优雅或直接的方法来实现这一点。
sso
和ss1
的类型和值与问题中相同。 - Howard Hinnant%H:%M:%S
的字符串转换为chrono::duration
。是否有直接的方法可以进行此转换? - afp_2008