Я пытаюсь создать некоторое время l oop в простой тестовой программе. Эта программа предназначена для суммирования всех целых чисел, введенных пользователем, а также для отображения этой суммы и выхода из l oop после того, как пользователь нажмет «a». Если пользователь вводит что-то отличное от целого числа или «a», программа должна ответить «Неверный ввод. Пожалуйста, повторите попытку» и разрешить пользователю ввести другое число.
Моя программа успешно суммирует целые числа , но если введено нецелое число, отличное от «a», l oop заканчивается, не позволяя пользователю ввести другое значение. Блок кода, начинающийся с if (! Cin), похоже, ничего не делает.
Я думаю, что проблема связана с (!cin)
, а не с test = to_string(number)
. Есть ли альтернативный метод обнаружения нецелого числа, который позволил бы этой программе успешно?
Вот программа. Спасибо как всегда за вашу помощь!
#include <iostream>
using namespace std;
#include <string>
int main()
{
int sum = 0;
int number;
string test;
cout << "Enter a series of integers; when you are done entering these integers, press a to display the sum of all integers.\n";
while (cin >> number)
{if (!cin)
{
test = to_string(number);
if (test == "a")
{break;}
else
{cout << "Invalid input. Please try again.\n";
continue;}
}
else
{sum += number;}
}
cout << "The total sum is " << sum << ".\n";
}