У меня проблемы с функциями cin.peek () и cin.get ().Вклад в целом всегда ускользает от меня.По сути, я пытаюсь получить строку цифр (которая может быть длиннее, чем int, поэтому он использует символы) для вставки в объект MyInt, используя перегрузку для >>.Класс MyInt, который я написал, содержит динамический массив символов с именем myNumber.Функция resize делает именно это, изменяет размер динамического массива до нового размера.
Мне нужно сделать две вещи
- Игнорировать начальные пробелы
- Остановиться на следующем символе, который не является 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
Я студент, и это «домашнее задание».Так же как и со всей домашней работой, мне дают нелогичные вещи, к которым я не могу получить доступ.Этот класс строки.Это довольно незначительная часть работы, но она как шип на моей стороне.