c++ boost locale facet boost-date-time

c++ - Propiedad/eliminar la faceta en una configuración regional(std:: locale)



boost boost-date-time (1)

De acuerdo con Stroustrup , un argumento 0 pasado al constructor le dice a la facet que la locale manejará la destrucción, y los dos constructores de bpt::time_facet defecto a 0 cuando no se suministra. Sin embargo, un valor distinto de cero implica que el programador debe manejar explícitamente la destrucción de la facet .

Escribí la siguiente función para obtener una cadena de fecha / hora usando boost.date_time .

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(); }

Tuve una pregunta rápida acerca de la propiedad / delete del objeto de facet . El constructor de std :: locale no es explícito en la propiedad / delete de la facet . Se intentó usar shared_ptr -wrapped y se apilaron versiones de facet , las cuales causaron fallas de seguridad. Además, ejecutar la función anterior a través de valgrind no mostró ninguna fuga (lo que probablemente implica que la configuración regional o la transmisión se está delete ), pero solo quería dejar claro que estoy haciendo lo correcto aquí. Gracias.