使用 std::cin 进行输入验证时出错

Error with input-validation using std::cin

我已经在我的程序中实现了这个检查,以确定输入的类型是否正确,如果不正确,它会要求重写输入。 如果输入错误,它工作得很好,但如果输入正确,则需要重新编写。我怎样才能避免这种情况? (您可以在此处找到示例 https://godbolt.org/z/KjoTbc

#include <iostream>
#include <limits>

int main() {

int input;
std::cin >> input ;
while (!(std::cin >> input)) { 
std::cin.clear(); 
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << "Please, write an integer number\n"; 
};
}

您没有检查第一个 std::cin >> input ; 和 运行 while (!(std::cin >> input)),它们无条件地要求输入。

删除第一个未检查的读数并试试这个:

#include <iostream>
#include <limits>

int main() {

    int input;
    while (!(std::cin >> input)) { 
        std::cin.clear(); 
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        std::cout << "Please, write an integer number\n"; 
    }
}