我适应这个代码编程:企图原理与实践在C++由Bjarne Stroustrup的检查给出的输入是有效的:C++的cout在while循环打印两次
#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? "
正在打印两次,一次在第二次输入之前,一次在之后。
任何人都知道为什么会发生这种情况?谢谢。
在Visual Studio 2010中对此进行了测试,并按预期工作,编译时使用了哪些编译器? – EddieBytes
测试了gcc 4.6.3 @ ubuntu x64,确实打印了两次,非常奇怪:S – SingerOfTheFall