【发布时间】:2011-03-24 16:22:59
【问题描述】:
我正在尝试使用 boost::date_time 将日期字符串(从 Twitter API 获得)解析为 ptime 对象。日期格式的一个例子是:
Thu Mar 24 16:12:42 +0000 2011
无论我做什么,在尝试解析字符串时都会收到“年份超出有效范围”异常。日期格式对我来说是正确的,这里是代码:
boost::posix_time::ptime created_time;
std::stringstream ss(created_string);
ss.exceptions(std::ios_base::failbit); //Turn on exceptions
ss.imbue(std::locale(ss.getloc(), new boost::posix_time::time_input_facet("%a %b %d %T %q %Y")));
ss >> created_time;
在上面的代码中“created_string”包含上面的日期。是不是格式字符串有误?
【问题讨论】:
-
可以肯定的是,您在函数调用中使用
new造成了内存泄漏。您对 Java 还是 C# 更有经验? -
是的,不用担心,我知道这一点,我一直在重新安排代码试图让它工作,当我得到日期解析时我会修复它:) 编辑:实际上,我认为它不会导致泄漏...除非您将 1 作为第二个可选构造函数 arg 传递,否则会重新计算 time_input_facet。
-
是的,我刚刚检查过,将指针传递给堆栈上的 time_input_facet 会在语言环境被破坏时导致崩溃(除非您将 1 传递给禁用引用计数的构造函数)。所以上面的代码不会泄漏(即使它看起来应该:))
标签: c++ parsing boost datetime