15
我编写了以下函数以使用boost.date_time来获取日期/时间字符串。所有权/删除区域设置(std :: locale)的方面
namespace bpt = boost::posix_time;
string
get_date_time_string(bpt::ptime time)
{
bpt::time_facet * facet(new bpt::time_facet);
facet->format("%Y%m%d%H%M%S");
stringstream return_value;
return_value.imbue(std::locale(std::locale::classic(), facet));
return_value << time;
return return_value.str();
}
我不得不对facet
对象的所有权/ delete
“ING一个简单的问题。 std::locale's constructor没有明确说明facet
的所有权/ delete
。尝试使用shared_ptr
包装和堆栈分配版本facet
- 这两个版本都导致了seg-fault。此外,通过valgrind运行上述功能没有显示任何泄漏(这可能意味着区域或流正在照顾delete
'ing),但我只想清楚,我在这里做的是正确的事情。谢谢。
太棒了!谢谢。 [RTFM](http://www.cplusplus.com/reference/std/locale/locale/facet/),嗯?! ;) – 2011-03-17 17:48:10
不要觉得不好,我问过同样类型的问题! – rcollyer 2011-03-17 19:23:27
哇,我希望他们会重新访问标准库的这部分与出现C + + 11 .. – Zac 2013-10-02 19:02:12