【发布时间】:2016-08-11 07:50:00
【问题描述】:
请阅读以下代码:
#include <iostream>
#include <cstdlib>
int main() {
std::cout << "Please input one integer." << std::endl;
int i;
while (true) {
std::cin >> i;
if (std::cin) {
std::cout << "i = " << i << std::endl;
break;
} else {
std::cout << "Error. Please try again."<< std::endl;
std::cin.ignore();
std::cin.clear();
}
}
std::cout << "Thank you very much." << std::endl;
std::system("pause");
return 0;
}
当我给 std::cin 一个无效的输入,比如w,那么Error. Please try again.就会被无限输出。
我以为std::cin.ignore 会清空输入流,std::cin.clear 会将其恢复到正常状态。那么为什么会发生无限循环呢?
【问题讨论】:
-
clear首先。ignore秒。
标签: c++ infinite-loop cin