2017-10-05 6 views
2

入力からの文字が分割され、それぞれの配列/リスト要素に挿入されるように>>オーバーライドされた演算子でクラスを作成しようとしています。たとえば:operator >>をオーバーライドしてcin要素を配列要素に分割する方法

cin >> myobj // say '1234' is entered 

は次のように表現される:

cout >> myobj // outputs something like [1, 2, 3, 4] 

私はC++と非常に経験ないんだけど、これは非常に簡単ですか、何らかの理由のためだけに悪いアイデアであればしないでください。

+0

文字列に入れないのはなぜですか? – stark

+1

Thiaは「私は考えがありますが、どこから始めるべきかわかりません」と質問するにはとても良い場所ではありません。 –

答えて

3

はい、これは完全に合理的なことです。コードを書くための1つの方法は、この一般的な行に沿っています:

#include <iostream> 
#include <sstream> 

class foo { 
    char a, b, c, d; 

    friend std::istream &operator>>(std::istream &is, foo &f) { 
     is.get(f.a); 
     is.get(f.b); 
     is.get(f.c); 
     is.get(f.d); 
     return is; 
    } 

    friend std::ostream &operator<<(std::ostream &os, foo const &f) { 
     return os << '[' << f.a << ',' << f.b << ',' << f.c << ',' << f.d << ']'; 
    } 
}; 

int main() { 
    foo f; 
    std::istringstream input("1234"); 

    input >> f; 
    std::cout << f; 
} 
関連する問題