我有这个C ++函数:

string date()
{
  time_t seconds = time (NULL);

struct tm * timeinfo = localtime (&seconds);

ostringstream oss;
oss << (timeinfo->tm_year + 1900) << "-" << (timeinfo->tm_mon + 1) << "-" << timeinfo->tm_mday;
string data = oss.str();

return data;
}


问题是我想要月份和日期为0。它返回的是“ 2013-6-1”而不是“ 2013-06-01”

我正在尝试使用某些if和else来解决这个问题,但是我什么也没做。

请你帮助我好吗?

最佳答案

您可以使用两个流修饰符std::setwstd::setfill进行适当的设置,例如,可以将代码更改为:

string date()
{
   time_t seconds = time (NULL);

   struct tm * timeinfo = localtime (&seconds);

   ostringstream oss;
   oss << (timeinfo->tm_year + 1900) << "-" << std::setw(2) << std::setfill('0') << (timeinfo->tm_mon + 1) << "-" << std::setw(2) << std::setfill('0') << timeinfo->tm_mday;
   string data = oss.str();

   return data;
}

10-08 12:00