2012-04-09 13 views
-1
LongInt i1; 

cin >> i1; 

ここで、LongIntは整数のスタックを含むクラスです。クラスのスタックに入力を格納したいと思うので、クラスファイルに>>演算子をオーバーロードしなければならないと思います。問題は、cin >> "111343241"のような入力をスタック桁でどのように押し込むかわからないことです。どうすればこの仕事をすることができますか?スタックリストクラスのオーバーロード>>演算子

+0

あなたのアプローチを共有します。 –

+0

待って、 'cin >>" 111343241 "はどういう意味ですか?入力を受け付けて文字列に入れることはできません。あなたは 'output << i1;'を意味しましたか? –

+0

私はcin >> 193241924924を意味していましたが、通常のintには格納できない数だけあります。私はs1と呼ばれるデータフィールドを持つLongIntクラスを持っていますが、数字で数字を与えるためにcinを分割する場所を知りません。 –

答えて

3

、GETループを実装し、オペレータ自体をオーバーロードします倍長整数に一桁をプッシュする方法

std::istream& operator >>(std::istream& is, LongInt& li) { 
    char c; 
    while(is.get(c).good()) { 
     if(!std::isdigit(c)) { 
      is.unget(); 
      break; 
     } 

     ...push it to li 
    } 

    return is; 
} 

名前空間スコープを定義するには、倍長整数の実装に依存します。

+1

ループ条件は 'while(is.get(c))'にする必要があります。 –

+0

Trueとisgood()は間違った名前でした。 ;-) – modelnine

関連する問題