2016-11-18 75 views
0

我正在製作一個動態的char字符串類,並且我有一個函數,它將獲取輸入直到分隔符,並將其放入動態字符串中。C++ - 可以容納istreams的變量?

我想知道的是,如果有一種方法可以將流保存到變量中,該變量可以保存cinifstream

我目前正在使用函數重載,但每次都編輯每個函數都很煩人。

回答

4

隨着符合標準的編譯器,cinistream一些子類的實例,並且ifstream類從istream繼承。

這意味着您可以使用istream(引用,指針...)作爲函數參數。

+0

這非常有幫助謝謝!我希望繼承能夠發揮作用,但不知道如何。 –

1

我目前使用的是加載函數,但是每次都編輯每個函數都很麻煩。

您可以輕鬆地通過接收std::istream引用減少你的函數重載:

class MyType { 
public: 
     void get(std::istream& is) { 
      is >> x >> y; 
     } 
private: 
     int x; 
     int y; 
}; 

std::istream& operator>>(std::istream& is, MyType& myType) { 
    myType.get(is); 
    return is; 
} 

std::ifstream繼承std::istream以及std::cin S型一樣。所以你可以回到std::istream參考。

+0

謝謝你糾正我的拼寫錯誤! –