1

我有以下日期:

std::string sdt("2011-01-03");

我编写了以下 2 个函数并使用以下方法调用它们:

 date test;
  string_to_date(sdt,test);
  date_to_string(test,sdt);

string_to_date()作品,它应该返回 ,2011-Jan-03date_to_string() 返回

not-a-date-time

这些是功能:

void string_to_date(const std::string& st, date out)
{
  std::string in=st.substr(0,10);
  date d1(from_simple_string(std::string (in.begin(), in.end())));
  std::cout<<d1;
  out=d1;
}


void date_to_string(date in, const std::string& out)
{

  date_facet* facet(new date_facet("%Y-%m-%d"));
  std::cout.imbue(std::locale(std::cout.getloc(), facet));
  std::cout<<in<<std::endl;

    out=in;//this doesn't work

}
4

1 回答 1

2
void date_to_string(date in, std::string& out)
{
    std::ostringstream str;
    date_facet* facet(new date_facet("%Y-%m-%d"));
    str.imbue(std::locale(str.getloc(), facet));
    str << in;

    out = str.str();
}

应该管用。注意constout参数中删除。是否有理由不简单地返回生成的字符串?

于 2012-05-28T00:52:08.453 回答