我正在製作一個動態的char
字符串類,並且我有一個函數,它將獲取輸入直到分隔符,並將其放入動態字符串中。C++ - 可以容納istreams的變量?
我想知道的是,如果有一種方法可以將流保存到變量中,該變量可以保存cin
或ifstream
。
我目前正在使用函數重載,但每次都編輯每個函數都很煩人。
我正在製作一個動態的char
字符串類,並且我有一個函數,它將獲取輸入直到分隔符,並將其放入動態字符串中。C++ - 可以容納istreams的變量?
我想知道的是,如果有一種方法可以將流保存到變量中,該變量可以保存cin
或ifstream
。
我目前正在使用函數重載,但每次都編輯每個函數都很煩人。
隨着符合標準的編譯器,cin
是istream
一些子類的實例,並且ifstream
類從istream
繼承。
這意味着您可以使用istream
(引用,指針...)作爲函數參數。
我目前使用的是加載函數,但是每次都編輯每個函數都很麻煩。
您可以輕鬆地通過接收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
參考。
謝謝你糾正我的拼寫錯誤! –
這非常有幫助謝謝!我希望繼承能夠發揮作用,但不知道如何。 –