我正在创建一个动态char
字符串类,我有一个函数,它将获得输入,直到分隔符,并将其放入动态字符串。
我想知道的是,是否有办法将流保存到变量中,可以保存cin
或ifstream
。
我目前正在使用函数重载,但每次编辑每个函数都很烦人。
答案 0 :(得分:4)
使用符合标准的编译器,cin
是istream
的某个子类的实例,ifstream
类继承自istream
。
这意味着您可以使用istream
(引用,指针...)作为所有内容的函数参数。
答案 1 :(得分: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
类型。因此,您可以回退到std::istream
参考。