C++ 如果“std::cin”的输入不正确,那么它将崩溃,但程序的其余部分将工作
如下面的代码所示:C++ 如果“std::cin”的输入不正确,那么它将崩溃,但程序的其余部分将工作,c++,C++,如下面的代码所示: int count = 0; std::cin >> count_of_emploies; for (int i = 0; i < 11 && (count <= 1 || count >= 100); i++) { std::cout << "enter again."; std::cin >> count; if (i > 9) return 0; } 但是当输入像asd
int count = 0;
std::cin >> count_of_emploies;
for (int i = 0; i < 11 && (count <= 1 || count >= 100); i++) {
std::cout << "enter again.";
std::cin >> count;
if (i > 9) return 0;
}
但是当输入像asdf时,这段代码会导致所有std::cin crush和程序的其他部分几乎正常工作,但不等待用户的输入
当输入类似于asdf时,此代码会导致所有std::cin错误
这是因为接收到错误的输入。
要忽略这一点并继续,您必须
a清除流错误标志std::cin.clear
b忽略输入缓冲区中可能的最大字符数,直到换行符使用std::cin.ignorestd::numeric_limits::max'\n'