2011-08-21 32 views
3

我有一个Date类转换日期类字符串

class Date { int dd, mm, yyyy}; 

我写的3规则,所有的作品。我想将日期转换为字符串。我是否需要一个转换运算符string()来执行此操作? thx!

回答

3

当我想建立一个对象的文本表示可用的,我平时写(publicprint()方法,它接受std::ostream&。这使我可以轻松地进行单元测试,并且它可以公开私有数据,而无需制作friend

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

这使得编写流insertion operatorJesus 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(); 
} 
5
std::ostream& operator<<(std::ostream& s, const Date& d) 
{ 
    s << "Format your date object here"; 
    return s; 
} 

在C++中,如果需要toString()类似的功能,可以使用流。

因此,举例来说,你可以做

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

THX耶稣,让我试试吧 – itcplpl

+0

你的意思是'ostream'在这里? 'std :: stream'对我来说是新的。 –

+0

@Steve谢谢,一定有错误的东西。 –