我有一个Date类转换日期类字符串
class Date { int dd, mm, yyyy};
我写的3规则,所有的作品。我想将日期转换为字符串。我是否需要一个转换运算符string()来执行此操作? thx!
我有一个Date类转换日期类字符串
class Date { int dd, mm, yyyy};
我写的3规则,所有的作品。我想将日期转换为字符串。我是否需要一个转换运算符string()来执行此操作? thx!
当我想建立一个对象的文本表示可用的,我平时写(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();
}
std::ostream& operator<<(std::ostream& s, const Date& d)
{
s << "Format your date object here";
return s;
}
在C++中,如果需要toString()类似的功能,可以使用流。
因此,举例来说,你可以做
s << mm << "/" << dd << "/" << yyyy;
THX耶稣,让我试试吧 – itcplpl
你的意思是'ostream'在这里? 'std :: stream'对我来说是新的。 –
@Steve谢谢,一定有错误的东西。 –