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.