我有这个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::setw
和std::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;
}