1
我有一個複雜的對象,我希望能夠通過<<
運算符將其傳遞到std::ostringstream
,就像字符串或int。我想給ostringstream對象的唯一id(int)和/或name(string)。是否有我能在我的課程中實施的操作員或方法以使其工作?Stringstream - 將一個對象轉換爲字符串
我有一個複雜的對象,我希望能夠通過<<
運算符將其傳遞到std::ostringstream
,就像字符串或int。我想給ostringstream對象的唯一id(int)和/或name(string)。是否有我能在我的課程中實施的操作員或方法以使其工作?Stringstream - 將一個對象轉換爲字符串
在相同的命名空間類中定義的運算符重載:
template<typename charT, typename traits>
std::basic_ostream<charT, traits> &
operator<< (std::basic_ostream<charT, traits> &lhs, Your_class const &rhs) {
return lhs << rhs.id() << ' ' << rhs.name();
}
如果輸出功能需要訪問類的私有成員,那麼你可以將它定義爲友元函數:
class Your_class {
int id;
string name;
template<typename charT, typename traits>
friend std::basic_ostream<charT, traits> &
operator<< (std::basic_ostream<charT, traits> &lhs, Your_class const &rhs) {
return lhs << rhs.id << ' ' << rhs.name;
}
};
請注意,這不會導致成員函數,它只是一種便捷的方式來一次聲明和定義一個好友函數。
'traits'模板參數具有默認值,因此可以跳過。 – AlwaysLearning
是的只是重載<<運算符 - 請參閱http://stackoverflow.com/questions/4421706/operator-overloading –
獨特的id在什麼情況下?在正在運行的進程中,您可以使用它的內存地址。 – Ivarpoiss
它們是「學生」對象,用於類項目。每個Student對象都有一個名稱,ID,地址和電話號碼,並且由一個txt文件構建而成。 –