如何解决为“std::chrono”解析这个时间字符串有什么问题?
我只是想使用以下方法将时间字符串解析为 chrono::system_clock::time_point
:
#include <iosfwd>
#include "date/date.h"
std::stringstream sstime;
sstime << "17:34:05";
std::chrono::system_clock::time_point tp_time;
sstime >> date::parse("%H:%M:%s",tp_time);
我希望在 time_point
之后获得指定时间的 EPOCH
,但我得到的是 0(即 EPOCH
)。
请注意,我使用的是 date library 的 Howard Hinnant 。
解决方法
parse
函数的设计是,如果您没有为正在解析的类型解析足够的信息,则会在流上设置 failbit
。 parse
认为 {h,m,s}
信息不足以唯一确定时间(system_clock::time_point
),因此解析失败。
您可以通过解析为 seconds
持续时间来实现此目的:
#include "date/date.h"
#include <sstream>
int
main()
{
std::stringstream ssTime;
ssTime << "17:34:05";
std::chrono::seconds tp_time;
ssTime >> date::parse("%H:%M:%S",tp_time);
}
tp_time
在本例中的值为 63245s。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。