将字符串转换为增强::d和周围

converting string to boost::date and around

本文关键字:周围 增强 字符串 转换      更新时间:2023-10-16

我有以下日期:

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

我编写了 2 个函数,如下所示,并使用以下命令调用它们:

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

string_to_date()工作并返回 2011-Jan-03应有的方式而date_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
}
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();
}

应该工作。请注意从 out 参数中删除的const。有没有理由不简单地返回生成的字符串?