我从Bjarne Stroustrup的C++编程:原理与实践中改编了这段代码,以尝试检查所给的输入是否有效:
这个代码的运行结果符合预期,只是单词“Sorry, can you enter that again? ”被打印了两次,一次在第二个输入之前,一次在之后。请问有人知道为什么会出现这种情况吗?谢谢。
#include <iostream>
using namespace std;
int main()
{
cout << "Please enter your first name and age: ";
string first_name = "???";
int age = -1;
cin >> first_name >> age;
while (!cin) {
cin.clear();
cout << "Sorry, can you enter that again? ";
cin >> first_name >> age;
}
cout << "Hello, "<<first_name<<"! (age "<<age<<")\n";
return 0;
}
这个代码的运行结果符合预期,只是单词“Sorry, can you enter that again? ”被打印了两次,一次在第二个输入之前,一次在之后。请问有人知道为什么会出现这种情况吗?谢谢。