我有一个游戏,用户需要输入x和y坐标在一定范围内,一次一个。现在我输入的代码如下:要求有效的输入与cout/cin
do {
printf("\n");
cout << "X: ";
cin >> x;
cout << "Y: ";
cin >> y;
} while (cin.fail());
我是新来的C++,但阅读文档,使我相信,这是验证用户输入一个可以接受的方法。当输入有效时,它可以很好地工作,但是当输入是不同类型的(例如输入“a”)时,它会以“X:Y:”无限循环。我需要做什么不同的事情才能让它等待用户输入,就像第一次读取这些行一样?要如何处理错误
std::cout << "X: ";
if (!(std::cin >> x)) { /* error */ }
std::cout << "Y: ";
if (!(std::cin >> y)) { /* error */ }
这是给你:
有重复,但你需要检查成功,清除坏标志,并放弃不良输入。 – chris
查看常见问题:[我如何才能让'std :: cin'跳过无效输入字符?](http://www.parashift.com/c++-faq/istream-and-ignore.html) – ildjarn
@ildjarn谢谢!我现在开始工作了。仍然有很多东西要学.. – Chris