2016-11-18 10 views
0

私は動的なchar文字列クラスを作成していますが、これは区切り文字まで入力を取得して動的文字列に入れる関数を持っています。C++ - istreamsを保持できる変数?

ストリームを変数に保存する方法があり、cinまたはifstreamのいずれかを保持できる方法があるかと思います。

私は現在、関数のオーバーロードを使用していますが、毎回各関数を編集する必要があります。標準準拠のコンパイラで

答えて

4

cinistreamのいくつかのサブクラスのインスタンスであり、ifstreamクラスがistreamから継承しています。

これは、すべての機能パラメータとしてistream(参照、ポインタ...)を使用できることを意味します。

+0

ありがとうございました!私は相続財産がロールバックされることを望んでいたが、どのようにしてそれがわからなかった。 –

1

私は現在、関数の読み込みを使用していますが、毎回各関数を編集する必要があります。

あなたは簡単にstd::istream参照受信することにより、あなたの関数のオーバーロードを減らすことができます。std::istreamなどstd::cinの型から

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のリファレンスに戻ることができます。

+0

私のスペルを訂正していただきありがとうございます! –

関連する問題