我试图制作一个程序,它接受输入直到输入-1,并使用异常正确地处理输入。
它接受用户输入firstname
和age
,并打印firstname
和增加1的age。如果第二个变量不是整数(年龄),那么它应该打印fristname
和0
。
但是我的程序给了我一个意外的输出。我该怎么解决这个问题?
提前谢谢你。
输入格式
John 12
Michel 15
Alice Graz 11
Bob 15
-1
预期产出
John 13
Michel 16
Alice 0
Bob 16
我的代码
#include <string>
#include <stdexcept>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
string inputName;
int age;
cin.exceptions(ios::failbit);
cin >> inputName;
while (inputName != "-1")
{
try
{
cin >> age;
}
catch (exception ex)
{
age = -1;
if (cin.fail())
cin.clear();
cin.ignore();
}
cout << inputName << " " << (age + 1) << endl;
cin >> inputName;
}
return 0;
}
尝试使用cin.ignore()
,如下所示
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
必须包含
头文件。