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

cin >> i1; 

wo LongInt eine Klasse ist, die einen Stapel Ganzzahlen enthält. Ich möchte die Eingabe in den Stapel in der Klasse speichern, und ich nehme an, dass ich den Operator >> in meiner Klassendatei überladen muss. Das Problem ist, dass ich nicht sicher bin, wie man Eingaben wie cin >> "111343241" Ziffer für Ziffer in einen Stapel pusht. Wie würde ich das funktionieren lassen?Überladen >> Operator für Stapelliste Klasse

+0

Pls teilen Sie Ihren Ansatz. –

+0

Warte, was heißt 'cin >>" 111343241 "? Sie können keine Eingabe machen und sie dann in eine Zeichenfolge einfügen. Meintest du "output << i1;"? –

+0

Ich meinte cin >> 193241924924, nur eine Nummer, die nicht in regulären int gespeichert werden kann. Ich habe eine LongInt-Klasse, wo ich ein Datenfeld namens s1 habe, aber ich weiß nicht, wo ich anfangen soll, cin zu trennen, um mir Ziffer für Ziffer –

Antwort

3

Um den Bediener selbst überlasten, die get-Schleife Implementierung, einen Namespace-scope

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; 
} 

Wie Sie einstelligen Bereich definieren drücken, um die LongInt auf Ihrer Implementierung von LongInt abhängt.

+1

Ihre Schleifenbedingung sollte einfach 'while (is.get (c))' sein. –

+0

True - und isgood() war sowieso der falsche Name. ;-) – modelnine