我有一个日期类
class Date { int dd, mm, yyyy};
我写过3的规则,一切正常。我想将Date转换为字符串。我需要转换运算符字符串()来执行此操作吗? THX!
答案 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();
}