我有一個遊戲,用戶需要輸入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