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'