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-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

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

動作するはずです。constパラメータから削除されていることに注意してoutください。生成された文字列を単純に返さない理由はありますか?

于 2012-05-28T00:52:08.453 に答える