将日期类转换为字符串

时间:2011-08-21 01:44:51

标签: c++

我有一个日期类

class Date { int dd, mm, yyyy};

我写过3的规则,一切正常。我想将Date转换为字符串。我需要转换运算符字符串()来执行此操作吗? THX!

2 个答案:

答案 0 :(得分:5)

std::ostream& operator<<(std::ostream& s, const Date& d)
{
    s << "Format your date object here";
    return s;
}

在C ++中,如果你想要像串功能一样使用流,你可以使用流。

所以例如你可以做

s << mm << "/" << dd << "/" << yyyy;

答案 1 :(得分:3)

当我想对可用对象进行文本表示时,我通常会编写一个public print()方法,该方法需要std::ostream&。这使我可以轻松进行单元测试,并且无需制作friend即可公开私有数据。

void Date::print(std::ostream& s) const
{
    s << yyyy << "-" << mm << "-" << dd;
}

这使得编写insertion operator简洁的流Jesus Ramos suggested

std::ostream& operator<<(std::ostream& s, const Date& d)
{
    d.print(s);
    return s;
}

如果你(真的)想要一个std::string() operator,那那就太微不足道了:

Date::operator std::string() const
{
    std::ostringstream oss;
    print(oss);
    return oss.str();
}