Hi,

I get a run-time error when I run the following code;

std::string LocaleFormattedDateTime (::boost::posix_time::ptime pt)
{
 std::string s;
 std::ostringstream ss;

 //::boost::posix_time::time_facet * tf = new ::boost::posix_time::time_facet;
 ::boost::posix_time::time_facet tf;
 //std::locale custom_locale (std::locale(""), tf);
 std::locale custom_locale (std::locale(""), &tf);

 // custom_locale takes ownership of the tf facet
 ss.imbue (custom_locale);
 //(*tf).format("%Y%m%d-%H%M%S-%f"); // date time
 tf.format("%Y%m%d-%H%M%S-%f"); // date time
 ss << pt;
 // don't explicitly delete tf - what's wrong with a stack variable? why this runtime error? What is the point of new() above and 
                                     //what if I don't delete allocated memory here.
 return ss.str();
}

void CurrentDateTimeWithMicroseconds(char s[], int sz = 100) 
{
using namespace boost::posix_time;
using namespace std;
using boost::date_time::date_facet;

ptime t = microsec_clock::local_time();
ostringstream ss;
//time_facet *df = new time_facet();
time_facet df;
//std::locale loc (std::locale(""), df);
std::locale loc (std::locale(""), &df);
ss << LocaleFormattedDateTime(t) ;
memset(s,0,sz);
strcpy(s,ss.str().c_str());
}

Can you tell me the problem?

I modified this code after copying this from some online source.

Thanks in advance, Asif