c++ - 如何处理错误的数据类型输入

标签 c++ input types error-handling

在 C++ 中,如何处理错误的输入?就像,如果程序要求输入一个整数,当你输入一个字符时,它应该能够做一些事情,然后循环重复输入,但是当你输入一个整数时,循环进入无限期,反之亦然。

最佳答案

程序进入无限循环的原因是std::cin的错误输入标志是由于输入失败而设置的。要做的是清除该标志并丢弃输入缓冲区中的错误输入。

//executes loop if the input fails (e.g., no characters were read)
while (std::cout << "Enter a number" && !(std::cin >> num)) {
    std::cin.clear(); //clear bad input flag
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //discard input
    std::cout << "Invalid input; please re-enter.\n";
}

the C++ FAQ为此,以及其他示例,包括在条件中添加最小值和/或最大值。

另一种方法是将输入作为字符串获取并使用 std::stoi 或其他允许检查转换的方法将其转换为整数。

关于c++ - 如何处理错误的数据类型输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10349857/

相关文章:

c# - 具有相同接口(interface)但属性类型不同的类

c++ - 如何访问嵌套类的数据?

c++ - 特征向量对数错误不完整类型的使用无效

Java:在不知道输入行数的情况下读取输入

javascript - 如何将下拉列表中的数据连接到javascript中输入文本的数据

java - Java中如何在子类中引用父类(super class)的泛型类型?

c++ - 重载 == 运算符以使用字符串比较来比较两个 char[]

c++ - 如何在编译时检查函数是否被调用

Java - .csv 文件作为输入

swift - 检查泛型类型是否是 Swift 中的函数类型