c ++ - 可以容纳istreams的变量?

时间:2016-11-18 23:30:25

标签: c++ dynamic stream char

我正在创建一个动态char字符串类,我有一个函数,它将获得输入,直到分隔符,并将其放入动态字符串。

我想知道的是,是否有办法将流保存到变量中,可以保存cinifstream

我目前正在使用函数重载,但每次编辑每个函数都很烦人。

2 个答案:

答案 0 :(得分:4)

使用符合标准的编译器,cinistream的某个子类的实例,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参考。