此刻,我正在尝试读取格式化的时间字符串,并从中创建持续时间。我目前正在尝试使用boost date_time time_duration类来读取和存储该值。将时间字符串转换为持续时间
boost date_time提供了一种方法time_duration duration_from_string(std::string)
,该方法允许从时间字符串创建time_duration,并接受适当格式化的字符串("[-]h[h][:mm][:ss][.fff]".
)。
现在,如果使用格式正确的时间字符串,此方法可以正常工作。但是,如果您提交的内容如“ham_sandwich”或“100”等无效,则会返回无效的time_duration。特别是如果您尝试将其传递到标准输出流,则会发生断言。
我的问题是:有谁知道如何测试boost time_duration的有效性?如果失败了,你能否提出另一种读取时间字符串并从中获取持续时间的方法?
注:我已经尝试了time_duration提供的明显测试方法; is_not_a_date_time()
,is_special()
等,他们不认为有问题。
使用升压1.38.0
我已经使用了错误条件实际上是尝试,但问题是,断言发生在TIME_DURATION内部,也不要紧,关于流的错误状态设置 具体是什么错误条件允许你do是设置其ios :: failbit时抛出的流。所以在我的情况下,断言发生在time_duration内部,然后流检测到错误。 – radman 2010-06-07 02:04:31
嗯......让我把一些示例代码放在一起,看看我能否看到问题。 – 2010-06-07 02:12:23
对我很好。 :) – 2010-06-07 03:11:49