2011-08-21 45 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謝謝,一定有錯誤的東西。 –