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

cin >> i1; 

, где LongInt - класс, содержащий стек целых чисел. Я хочу сохранить вход в стек в классе, и я предполагаю, что это означает, что я должен перегрузить оператор >> в моем файле класса. Проблема в том, что я не уверен, как нажимать входы, такие как cin >> "111343241", в цифру стека цифрой. Как я могу сделать эту работу?перегрузка >> оператор для класса списка стека

+0

Pls поделиться своим подходом. –

+0

Подождите, что значит 'cin >>" 111343241 "' означает? Вы не можете принимать входные данные, а затем помещать их в строку. Вы имели в виду 'output << i1;'? –

+0

Я имел в виду cin >> 193241924924, только некоторое число, которое не может быть сохранено в обычном int. У меня есть класс LongInt, где у меня есть поле данных s1, но я даже не знаю, с чего начать разбивать cin, чтобы дать мне цифру по цифре. –

ответ

3

перегружать сам оператор, осуществляющий цикл ПОЛУЧИТЬ, определить пространство имен-сферы

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

Как подтолкнуть одной цифры к LongInt зависит от реализации LongInt.

+1

Ваше условие цикла должно быть просто 'while (is.get (c))'. –

+0

True - и isgood() было неправильным именем в любом случае. ;-) – modelnine