Я написал следующую функцию для получения строки даты/времени с помощью boost. дата_время.
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();
}
У меня был быстрый вопрос о владении/delete
объекте facet
. конструктор std::locale не указывает владельца/delete
' facet
. Пробовал использовать shared_ptr
-обернутые и выделенные в стеке версии facet
- обе из них вызывали ошибки сегментации. Кроме того, запуск вышеупомянутой функции через valgrind не показал никаких утечек (что, вероятно, подразумевает, что локаль или поток заботятся о delete
'инге), но я просто хотел прояснить, что я делаю правильную вещь здесь. Спасибо.