У меня проблемы с функциями cin.peek() и cin.get(). Ввод вообще всегда ускользает от меня. По сути, я пытаюсь получить строку цифр (которая может быть длиннее, чем int, поэтому она использует символы) для вставки в объект MyInt, используя перегрузку для >>. Класс MyInt, который я написал, содержит динамический массив символов с именем myNumber. Функция изменения размера делает именно это, изменяет размер динамического массива до нового размера.
мне нужно сделать две вещи
- Игнорировать ведущие пробелы
- Остановитесь на следующем символе, отличном от 0-9. (пробелы, буквы)
Вот что у меня есть:
istream& operator>> (istream& s, MyInt& n)
// Overload for the input operator
{
char c; // For peeking
int x;
MyInt input; // For storing
unsigned int counter = 0; // counts # of stored digits
while (isspace(s.peek()))
{
c = s.get();
}
while (C2I(s.peek()) != -1)
{
x = C2I(s.get());
input.myNumber[counter] = I2C(x);
counter++;
input.Resize(counter);
}
cout << "WHAH WHAH WEE WAH\n";
n = input;
}
Main вызывает только это:
cout << "Enter first number: ";
cin >> x;
cout << "Enter second number: ";
cin >> y;
cout << "You entered:\n";
cout << " x = " << x << '\n';
cout << " y = " << y << '\n';
Вот результат, который я получил:
Enter first number: 14445678954333
WHAH WHAH WEE WAH
Enter second number: 1123567888999H
WHAH WHAH WEE WAH
You entered:
x = 111111111111113
y = 11111111111119
Я студент, и это «домашнее задание». Так что, как и со всеми домашними заданиями, мне дают нелогичные вещи, к которым я не могу получить доступ. Это класс строк. Это довольно незначительная часть работы, но она как заноза в моем боку.