使用 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";
}
}
我已经在我的程序中实现了这个检查,以确定输入的类型是否正确,如果不正确,它会要求重写输入。 如果输入错误,它工作得很好,但如果输入正确,则需要重新编写。我怎样才能避免这种情况? (您可以在此处找到示例 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";
}
}